diff --git a/evm/evm-typegen/test-abi/GatewayRegistry.json b/evm/evm-typegen/test-abi/GatewayRegistry.json deleted file mode 100644 index e4d501a8f..000000000 --- a/evm/evm-typegen/test-abi/GatewayRegistry.json +++ /dev/null @@ -1,3316 +0,0 @@ -{ - "abi": [ - { - "type": "constructor", - "inputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "DEFAULT_ADMIN_ROLE", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "PAUSER_ROLE", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "addStake", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "allocateComputationUnits", - "inputs": [ - { - "name": "workerIds", - "type": "uint256[]", - "internalType": "uint256[]" - }, - { - "name": "cus", - "type": "uint256[]", - "internalType": "uint256[]" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "averageBlockTime", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "canUnstake", - "inputs": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "computationUnitsAmount", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "durationBlocks", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "computationUnitsAvailable", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "defaultStrategy", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "disableAutoExtension", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "enableAutoExtension", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "gatewayByAddress", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "gatewayId", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getActiveGateways", - "inputs": [ - { - "name": "pageNumber", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "perPage", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "bytes[]", - "internalType": "bytes[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getActiveGatewaysCount", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getCluster", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "clusterPeerIds", - "type": "bytes[]", - "internalType": "bytes[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getGateway", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "tuple", - "internalType": "struct IGatewayRegistry.Gateway", - "components": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "ownAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getMetadata", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "string", - "internalType": "string" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getMyGateways", - "inputs": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bytes[]", - "internalType": "bytes[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getRoleAdmin", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getStake", - "inputs": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "tuple", - "internalType": "struct IGatewayRegistry.Stake", - "components": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "lockStart", - "type": "uint128", - "internalType": "uint128" - }, - { - "name": "lockEnd", - "type": "uint128", - "internalType": "uint128" - }, - { - "name": "duration", - "type": "uint128", - "internalType": "uint128" - }, - { - "name": "autoExtension", - "type": "bool", - "internalType": "bool" - }, - { - "name": "oldCUs", - "type": "uint256", - "internalType": "uint256" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getUsedStrategy", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "grantRole", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "hasRole", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "initialize", - "inputs": [ - { - "name": "_token", - "type": "address", - "internalType": "contract IERC20WithMetadata" - }, - { - "name": "_router", - "type": "address", - "internalType": "contract IRouter" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "isStrategyAllowed", - "inputs": [ - { - "name": "strategy", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "mana", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "maxGatewaysPerCluster", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "pause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "paused", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "register", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "register", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - }, - { - "name": "gatewayAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "register", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "register", - "inputs": [ - { - "name": "peerId", - "type": "bytes[]", - "internalType": "bytes[]" - }, - { - "name": "metadata", - "type": "string[]", - "internalType": "string[]" - }, - { - "name": "gatewayAddress", - "type": "address[]", - "internalType": "address[]" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "renounceRole", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "callerConfirmation", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "revokeRole", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "router", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IRouter" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "setAverageBlockTime", - "inputs": [ - { - "name": "_newAverageBlockTime", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setGatewayAddress", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "newAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setIsStrategyAllowed", - "inputs": [ - { - "name": "strategy", - "type": "address", - "internalType": "address" - }, - { - "name": "isAllowed", - "type": "bool", - "internalType": "bool" - }, - { - "name": "isDefault", - "type": "bool", - "internalType": "bool" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setMana", - "inputs": [ - { - "name": "_newMana", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setMaxGatewaysPerCluster", - "inputs": [ - { - "name": "_maxGatewaysPerCluster", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setMetadata", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "stake", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "durationBlocks", - "type": "uint128", - "internalType": "uint128" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "stake", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "durationBlocks", - "type": "uint128", - "internalType": "uint128" - }, - { - "name": "withAutoExtension", - "type": "bool", - "internalType": "bool" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "staked", - "inputs": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "supportsInterface", - "inputs": [ - { - "name": "interfaceId", - "type": "bytes4", - "internalType": "bytes4" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "testAbi", - "inputs": [ - { - "name": "a", - "type": "uint256[][3]", - "internalType": "uint256[][3]" - }, - { - "name": "b", - "type": "tuple[3]", - "internalType": "struct IGatewayRegistry.Gateway[3]", - "components": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "ownAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ] - }, - { - "name": "c", - "type": "tuple[]", - "internalType": "struct IGatewayRegistry.Gateway[]", - "components": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "ownAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ] - }, - { - "name": "d", - "type": "tuple", - "internalType": "struct IGatewayRegistry.Gateway", - "components": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "ownAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ] - } - ], - "outputs": [ - { - "name": "ra", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "rb", - "type": "string", - "internalType": "string" - }, - { - "name": "rc", - "type": "tuple", - "internalType": "struct IGatewayRegistry.Gateway", - "components": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "ownAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "internalType": "string" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "token", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IERC20WithMetadata" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "unpause", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unregister", - "inputs": [ - { - "name": "peerId", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unregister", - "inputs": [ - { - "name": "peerId", - "type": "bytes[]", - "internalType": "bytes[]" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unstake", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "useStrategy", - "inputs": [ - { - "name": "strategy", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "event", - "name": "AllocatedCUs", - "inputs": [ - { - "name": "gateway", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "workerIds", - "type": "uint256[]", - "indexed": false, - "internalType": "uint256[]" - }, - { - "name": "shares", - "type": "uint256[]", - "indexed": false, - "internalType": "uint256[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "AutoextensionDisabled", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "lockEnd", - "type": "uint128", - "indexed": false, - "internalType": "uint128" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "AutoextensionEnabled", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "AverageBlockTimeChanged", - "inputs": [ - { - "name": "newBlockTime", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "DefaultStrategyChanged", - "inputs": [ - { - "name": "strategy", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "GatewayAddressChanged", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "newAddress", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Initialized", - "inputs": [ - { - "name": "version", - "type": "uint64", - "indexed": false, - "internalType": "uint64" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "ManaChanged", - "inputs": [ - { - "name": "newCuPerSQD", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MaxGatewaysPerClusterChanged", - "inputs": [ - { - "name": "newAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "MetadataChanged", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "string", - "indexed": false, - "internalType": "string" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Paused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Registered", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "id", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "peerId", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RoleAdminChanged", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "previousAdminRole", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "newAdminRole", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RoleGranted", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "sender", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RoleRevoked", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "sender", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Staked", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "lockStart", - "type": "uint128", - "indexed": false, - "internalType": "uint128" - }, - { - "name": "lockEnd", - "type": "uint128", - "indexed": false, - "internalType": "uint128" - }, - { - "name": "computationUnits", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "StrategyAllowed", - "inputs": [ - { - "name": "strategy", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "isAllowed", - "type": "bool", - "indexed": false, - "internalType": "bool" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unpaused", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unregistered", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "peerId", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unstaked", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "UsedStrategyChanged", - "inputs": [ - { - "name": "gatewayOperator", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "strategy", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "AccessControlBadConfirmation", - "inputs": [] - }, - { - "type": "error", - "name": "AccessControlUnauthorizedAccount", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - }, - { - "name": "neededRole", - "type": "bytes32", - "internalType": "bytes32" - } - ] - }, - { - "type": "error", - "name": "EnforcedPause", - "inputs": [] - }, - { - "type": "error", - "name": "ExpectedPause", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] - } - ], - "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61445880620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c806382fbdc9c116101b8578063bc9c0e6211610104578063e63ab1e9116100a2578063f586857a1161007c578063f586857a1461084c578063f887ea401461085f578063fac5bb9b14610872578063fc0c546a1461088557600080fd5b8063e63ab1e91461081c578063e6c7f21b14610831578063eb4f16b51461083957600080fd5b8063d87113e5116100de578063d87113e5146107ce578063dacfab0d146107d6578063dcefedaf146107e9578063e3fa31ed1461080957600080fd5b8063bc9c0e62146107a9578063bdb001a7146107b2578063d547741f146107bb57600080fd5b806394f3c72511610171578063b1a7e2791161014b578063b1a7e2791461074e578063b785a2e614610761578063b8050a5d14610774578063bb952d4e1461078757600080fd5b806394f3c725146106ef57806398807d841461071a578063a217fddf1461074657600080fd5b806382fbdc9c1461065b5780638456cb591461066e57806385f4498b14610676578063876ab349146106b657806391d14854146106c957806392255fbf146106dc57600080fd5b806336568abe11610277578063485cc9551161023057806367c1def91161020a57806367c1def9146104eb57806375734be81461050e5780637a7664601461052e5780637acfc9e21461064857600080fd5b8063485cc955146104ad578063585a6a6d146104c05780635c975abb146104d357600080fd5b806336568abe146104395780633736d8531461044c5780633abcf38c1461045f5780633f4ba83a14610472578063429773fb1461047a57806344d4bea81461049a57600080fd5b80631c0fa1c8116102e457806327d6c032116102be57806327d6c032146103f85780632c17a07f1461040b5780632def66201461041e5780632f2ff15d1461042657600080fd5b80631c0fa1c8146103bb578063233dedf1146103dc578063248a9ca3146103e557600080fd5b8063017a02c31461032c57806301a993561461034157806301ffc9a71461036a5780630def8b8a1461038d5780630fe9fb66146103a057806313f117f2146103b3575b600080fd5b61033f61033a366004613563565b610898565b005b61035461034f3660046135ae565b6109e6565b6040516103619190613616565b60405180910390f35b61037d610378366004613678565b610bc0565b6040519015158152602001610361565b61033f61039b3660046136a2565b610bf5565b61033f6103ae3660046136fc565b610c3d565b61033f610cb3565b6103ce6103c93660046135ae565b610d7c565b604051908152602001610361565b6103ce600a5481565b6103ce6103f33660046136a2565b610ebe565b61033f610406366004613767565b610ee0565b6103546104193660046137a8565b611020565b61033f611197565b61033f6104343660046137c5565b6113a8565b61033f6104473660046137c5565b6113ca565b61033f61045a3660046136a2565b611402565b61033f61046d3660046136a2565b611442565b61033f611482565b6103ce6104883660046137a8565b60046020526000908152604090205481565b6103ce6104a8366004613767565b6114a5565b61033f6104bb3660046137f5565b6116b2565b6103546104ce366004613767565b61189f565b6000805160206144038339815191525460ff1661037d565b61037d6104f93660046137a8565b60076020526000908152604090205460ff1681565b61052161051c366004613767565b611a25565b6040516103619190613823565b6105e961053c3660046137a8565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506001600160a01b0316600090815260036020818152604092839020835160c0810185526001820154815260028201546001600160801b0380821694830194909452600160801b9081900484169582019590955292810154918216606084015292900460ff161515608082015260049091015460a082015290565b6040516103619190600060c0820190508251825260208301516001600160801b038082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015260a083015160a083015292915050565b61033f61065636600461384b565b611ae5565b61033f610669366004613767565b611af5565b61033f611b11565b61037d6106843660046137a8565b6001600160a01b031660009081526003602052604090206002015443600160801b9091046001600160801b0316111590565b61033f6106c4366004613886565b611b31565b61037d6106d73660046137c5565b611e51565b61033f6106ea3660046136fc565b611e89565b6107026106fd366004613767565b611eca565b6040516001600160a01b039091168152602001610361565b6103ce6107283660046137a8565b6001600160a01b031660009081526003602052604090206001015490565b6103ce600081565b61033f61075c3660046139b5565b611f01565b61033f61076f366004613a4e565b612005565b61033f6107823660046137a8565b612261565b61079a610795366004613abe565b61233f565b60405161036193929190613bce565b6103ce600c5481565b6103ce600b5481565b61033f6107c93660046137c5565b612377565b6103ce612393565b61033f6107e4366004613c03565b6123a4565b6107fc6107f7366004613767565b6124de565b6040516103619190613c4e565b61033f610817366004613c61565b612685565b6103ce6000805160206143c383398151915281565b61033f612a4b565b61033f6108473660046136a2565b612b73565b61033f61085a366004613c88565b612ed4565b600154610702906001600160a01b031681565b600854610702906001600160a01b031681565b600054610702906001600160a01b031681565b60006108a381612f18565b821580156108c5575081806108c557506008546001600160a01b038581169116145b156109295760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742073657420646973616c6c6f77656420737472617465677920616044820152681cc8191959985d5b1d60ba1b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600760205260409020805460ff1916841515179055811561099b57600880546001600160a01b0319166001600160a01b0386169081179091556040517f84e184ce3e506721b995db9e77ad7527e97c83dd04bf98f5830508602bf837ad90600090a25b836001600160a01b03167f4e8e4980b101f6a8ebe870c7cf3767fb92422ef0c95a65b5cd750f9fce3c26e0846040516109d8911515815260200190565b60405180910390a250505050565b606060006109f46005612f22565b90506000610a028585613cd3565b90508151811115610a42576040805160008082526020820190925290610a38565b6060815260200190600190039081610a235790505b5092505050610bba565b6000610a4e8583613cea565b90508251811115610a5d575081515b6000610a698383613cfd565b6001600160401b03811115610a8057610a80613870565b604051908082528060200260200182016040528015610ab357816020015b6060815260200190600190039081610a9e5790505b509050825b82811015610bb35760026000868381518110610ad657610ad6613d10565b602002602001015181526020019081526020016000206002018054610afa90613d26565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2690613d26565b8015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050828583610b859190613cfd565b81518110610b9557610b95613d10565b60200260200101819052508080610bab90613d60565b915050610ab8565b5093505050505b92915050565b60006001600160e01b03198216637965db0b60e01b1480610bba57506301ffc9a760e01b6001600160e01b0319831614610bba565b6000610c0081612f18565b600b8290556040518281527fd48c454cdec818a86733db9fd6353a7b80d423e6a189ecac47703f9b5fa0801b906020015b60405180910390a15050565b6000610c498585612f2f565b509050610c5581612fb8565b60038101610c64838583613dc7565b50336001600160a01b03167f512a85d60acb1212e9e49cec8fc20daed3ed43977be6a8db77faf2c859e79e7f86868686604051610ca49493929190613eaf565b60405180910390a25050505050565b33600090815260036020819052604090912090810154600190910190600160801b900460ff1615610d1e5760405162461bcd60e51b8152602060048201526015602482015274105d5d1bd15e1d195b9cda5bdb88195b98589b1959605a1b6044820152606401610920565b60028101805460ff60801b1916600160801b1790556001810180546001600160801b03166001600160801b031917905560405133907feff5f78e20f1cd92a537c3cdbaeaea11ad293aace5d7262ed93f2f33b42a828f90600090a250565b6000600954612710610d8e9190613cd3565b610d9a906103e8613cd3565b600160009054906101000a90046001600160a01b03166001600160a01b0316638f0b335e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190613ee1565b6001600160a01b031663e9c85672600a5485610e2d9190613cd3565b6040518263ffffffff1660e01b8152600401610e4b91815260200190565b602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190613efe565b600b54610e998587613cd3565b610ea39190613cd3565b610ead9190613cd3565b610eb79190613f2d565b9392505050565b60009081526000805160206143e3833981519152602052604090206001015490565b610ee861301d565b600080610ef58484612f2f565b91509150610f0282612fb8565b336000908152600360205260409020610f1e9060050182613050565b610f745760405162461bcd60e51b815260206004820152602160248201527f47617465776179206e6f742072656d6f7665642066726f6d206f70657261746f6044820152603960f91b6064820152608401610920565b610f7f600582613050565b506001808301546001600160a01b03166000908152600460209081526040808320839055848352600291829052822080546001600160a01b031990811682559381018054909416909355610fd5908301826134e2565b610fe36003830160006134e2565b5050336001600160a01b03167fa133cd95a0c9cb4f8272f86cd3bb48ba2bf54f982e60bba1618e1286925eddec85856040516109d8929190613f41565b6001600160a01b03811660009081526003602052604081206060919061104890600501612f22565b9050600081516001600160401b0381111561106557611065613870565b60405190808252806020026020018201604052801561109857816020015b60608152602001906001900390816110835790505b50905060005b825181101561118f57600260008483815181106110bd576110bd613d10565b6020026020010151815260200190815260200160002060020180546110e190613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90613d26565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505082828151811061117157611171613d10565b6020026020010181905250808061118790613d60565b91505061109e565b509392505050565b61119f61301d565b3360009081526003602052604090206002015443600160801b9091046001600160801b031611156112045760405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481a5cc81b1bd8dad959608a1b6044820152606401610920565b33600090815260036020526040902060010154806112595760405162461bcd60e51b81526020600482015260126024820152714e6f7468696e6720746f20756e7374616b6560701b6044820152606401610920565b33600090815260036020526040812061127490600501612f22565b905060005b81518110156112c2576112af82828151811061129757611297613d10565b6020026020010151600561305090919063ffffffff16565b50806112ba81613d60565b915050611279565b50336000818152600360208190526040808320600181018490556002810184905591820180546001600160881b031916905560049182018390559154915163a9059cbb60e01b815290810192909252602482018490526001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e9190613f5d565b5060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b6113b182610ebe565b6113ba81612f18565b6113c4838361305c565b50505050565b6001600160a01b03811633146113f35760405163334bd91960e11b815260040160405180910390fd5b6113fd8282613108565b505050565b600061140d81612f18565b600a8290556040518281527f46a9c997a4d81c1f992b7ec20e34dfc97c0c67a86dc24f9ff1525718690bead390602001610c31565b600061144d81612f18565b600c8290556040518281527ff092d674fd06aab53c483be96eb202422ad493b452660e05adfe7f02aca08c1f90602001610c31565b6000805160206143c383398151915261149a81612f18565b6114a2613184565b50565b6000806114b28484612f2f565b5080546001600160a01b0316600090815260036020818152604092839020835160c0810185526001820154815260028201546001600160801b0380821694830194909452600160801b9081900484169582018690529382015492831660608201529290910460ff16151560808301526004015460a0820152919250439081106115415760009350505050610bba565b60008183602001516001600160801b03161161157757611572836000015184606001516001600160801b0316610d7c565b61157d565b8260a001515b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190613ee1565b6001600160a01b03166357d775f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190613f7a565b6001600160801b031690508084606001516001600160801b03161161168457509350610bba92505050565b60608401516001600160801b031661169c8284613cd3565b6116a69190613f2d565b98975050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156116f75750825b90506000826001600160401b031660011480156117135750303b155b905081158015611721575080155b1561173f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561176957845460ff60401b1916600160401b1785555b6117716131e4565b600080546001600160a01b03808a166001600160a01b0319928316811790935560018054918a16919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe9190613f97565b61180990600a61409e565b6009556000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805460ff19166001179055600c600a8181556103e8600b559055831561189657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b606060006118ad8484612f2f565b5080546001600160a01b03166000908152600360205260408120919250906118d790600501612f22565b905080516001600160401b038111156118f2576118f2613870565b60405190808252806020026020018201604052801561192557816020015b60608152602001906001900390816119105790505b50925060005b8151811015611a1c576002600083838151811061194a5761194a613d10565b60200260200101518152602001908152602001600020600201805461196e90613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461199a90613d26565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b50505050508482815181106119fe576119fe613d10565b60200260200101819052508080611a1490613d60565b91505061192b565b50505092915050565b6060600260008484604051611a3b9291906140ad565b604051809103902081526020019081526020016000206003018054611a5f90613d26565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b90613d26565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b5050505050905092915050565b611af182826000612685565b5050565b611af18282604051806020016040528060008152506000611b31565b6000805160206143c3833981519152611b2981612f18565b6114a2613210565b611b3961301d565b82611b865760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742073657420656d707479207065657249640000000000000000006044820152606401610920565b60008484604051611b989291906140ad565b60408051918290039091206000818152600260205291909120549091506001600160a01b031615611c0b5760405162461bcd60e51b815260206004820152601960248201527f50656572496420616c72656164792072656769737465726564000000000000006044820152606401610920565b600c54336000908152600360205260409020611c2990600501613259565b10611c765760405162461bcd60e51b815260206004820181905260248201527f546f6f206d616e7920676174657761797320696e2074686520636c75737465726044820152606401610920565b3360009081526003602052604090205460ff16611ca257600854611ca2906001600160a01b0316612261565b6040518060800160405280336001600160a01b03168152602001836001600160a01b0316815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060209182018690528381526002808352604091829020845181546001600160a01b03199081166001600160a01b03928316178355948601516001830180549096169116179093559083015190820190611d5c90826140bd565b5060608201516003820190611d7190826140bd565b5050336000908152600360205260409020611d90915060050182613263565b503360009081526003602052604090206001015415611db657611db4600582613263565b505b80336001600160a01b03167fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1998787604051611df2929190613f41565b60405180910390a3336001600160a01b03167f512a85d60acb1212e9e49cec8fc20daed3ed43977be6a8db77faf2c859e79e7f868686604051611e379392919061417c565b60405180910390a2611e4a8585846123a4565b5050505050565b60009182526000805160206143e3833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6113c4848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611b31915050565b600080611ed78484612f2f565b50546001600160a01b03908116600090815260036020526040902054610100900416949350505050565b848314611f205760405162461bcd60e51b8152600401610920906141a2565b848114611f3f5760405162461bcd60e51b8152600401610920906141a2565b60005b8581101561189657611ff3878783818110611f5f57611f5f613d10565b9050602002810190611f7191906141cb565b878785818110611f8357611f83613d10565b9050602002810190611f9591906141cb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250889150879050818110611fde57611fde613d10565b90506020020160208101906106c491906137a8565b80611ffd81613d60565b915050611f42565b61200d61301d565b82811461202c5760405162461bcd60e51b8152600401610920906141a2565b33600090815260046020818152604080842054845260028252808420600154825163367fed3f60e21b8152925191959485946001600160a01b039092169363d9ffb4fc93818301939290918290030181865afa158015612090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b49190613ee1565b6001600160a01b031663c84a49226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121159190613efe565b905060005b868110156121b9578188888381811061213557612135613d10565b90506020020135106121815760405162461bcd60e51b815260206004820152601560248201527415dbdc9ad95c88191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606401610920565b85858281811061219357612193613d10565b90506020020135836121a59190613cea565b9250806121b181613d60565b91505061211a565b5061271082111561220c5760405162461bcd60e51b815260206004820152601a60248201527f4f7665722031303025206f662043557320616c6c6f63617465640000000000006044820152606401610920565b336001600160a01b03167fa27699da150f8443c51cda13c28a1cbfb78ee3b4055de58197e770999fc23fbd8460020189898989604051612250959493929190614243565b60405180910390a250505050505050565b6001600160a01b03811660009081526007602052604090205460ff166122c05760405162461bcd60e51b815260206004820152601460248201527314dd1c985d1959de481b9bdd08185b1b1bddd95960621b6044820152606401610920565b3360008181526003602052604090819020805460ff196001600160a01b03861661010002166001600160a81b0319909116176001179055517fe31c0bedb29ec4df4a7c3d8d8c0e4ad6bf3648906837d5400d61a94410c5e5bb906123349084906001600160a01b0391909116815260200190565b60405180910390a250565b6000606061236c604080516080810182526000808252602082015260609181018290528181019190915290565b955095509592505050565b61238082610ebe565b61238981612f18565b6113c48383613108565b600061239f6005613259565b905090565b6000806123b18585612f2f565b915091506123be82612fb8565b60018201546001600160a01b0316156123ef5760018201546001600160a01b03166000908152600460205260408120555b6001600160a01b0383161561248b576001600160a01b0383166000908152600460205260409020541561246f5760405162461bcd60e51b815260206004820152602260248201527f47617465776179206164647265737320616c7265616479207265676973746572604482015261195960f21b6064820152608401610920565b6001600160a01b03831660009081526004602052604090208190555b6001820180546001600160a01b0319166001600160a01b03851617905560405133907f39cabfa8731da74e931aee9746250190051269d4d0c37ec9fb8276a32b1f660190610ca4908890889088906142ef565b60408051608081018252600080825260208201526060918101829052818101919091526002600084846040516125159291906140ad565b60408051918290039091208252602080830193909352908101600020815160808101835281546001600160a01b03908116825260018301541693810193909352600281018054919284019161256990613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461259590613d26565b80156125e25780601f106125b7576101008083540402835291602001916125e2565b820191906000526020600020905b8154815290600101906020018083116125c557829003601f168201915b505050505081526020016003820180546125fb90613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461262790613d26565b80156126745780601f1061264957610100808354040283529160200191612674565b820191906000526020600020905b81548152906001019060200180831161265757829003601f168201915b505050505081525050905092915050565b61268d61301d565b33600090815260036020526040902060010154156127015760405162461bcd60e51b815260206004820152602b60248201527f5374616b6520616c7265616479206578697374732c2063616c6c20616464537460448201526a185ad9481a5b9cdd19585960aa1b6064820152608401610920565b600061271684846001600160801b0316610d7c565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190613ee1565b6001600160a01b031663aea0e78b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f29190613f7a565b905060008361280a57612805858361431b565b612813565b6001600160801b035b6040805160c0810182528881526001600160801b0385811660208084019182528583168486019081528b8416606086019081528b151560808701908152600060a088018181523382526003958690529881209751600189015594519251928616600160801b9387168402176002880155905192860180549151939095166001600160881b031990911617911515021790915591516004820155919250906128bc90600501612f22565b905060005b815181101561290a576128f78282815181106128df576128df613d10565b6020026020010151600561326390919063ffffffff16565b508061290281613d60565b9150506128c1565b506000546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129869190613f5d565b50604080518881526001600160801b03858116602083015284168183015260608101869052905133917f85362f63fb0e3050a216decb3a7297e2aaff6cbf5b22583c073118d7efc8a47b919081900360800190a28415612a105760405133907feff5f78e20f1cd92a537c3cdbaeaea11ad293aace5d7262ed93f2f33b42a828f90600090a2611896565b6040516001600160801b038316815233907f17679fc77cdf7f6b7d2af4cb30497f3e81088fde6fdb20ca48d31372bc2af00690602001612250565b33600090815260036020819052604090912090810154600190910190600160801b900460ff16612ab65760405162461bcd60e51b8152602060048201526016602482015275105d5d1bd15e1d195b9cda5bdb88191a5cd8589b195960521b6044820152606401610920565b60028101805460ff60801b19811690915560018201546001600160801b03918216918291612ae69143911661326f565b612af0919061433b565b612afb90600161431b565b612b059190614361565b6001820154612b1d91906001600160801b031661431b565b6001820180546001600160801b03908116600160801b938216840217918290556040519290910416815233907f17679fc77cdf7f6b7d2af4cb30497f3e81088fde6fdb20ca48d31372bc2af00690602001612334565b612b7b61301d565b3360009081526003602052604090206001018054612bec5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420616464207374616b65207768656e206e6f7468696e672077616044820152671cc81cdd185ad95960c21b6064820152608401610920565b6001810154436001600160801b039091161115612c425760405162461bcd60e51b815260206004820152601460248201527314dd185ad9481a5cc81b9bdd081cdd185c9d195960621b6044820152606401610920565b6002810154600090612c5e9084906001600160801b0316610d7c565b82546002840154919250600091612c7e91906001600160801b0316610d7c565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf79190613ee1565b6001600160a01b031663aea0e78b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d589190613f7a565b6001840180546001600160801b0319166001600160801b03929092169190911790556002830154600160801b900460ff16612db25760028301546001840154612dad916001600160801b03908116911661431b565b612dbb565b6001600160801b035b6001840180546001600160801b03928316600160801b02921691909117905560038301819055825484908490600090612df5908490613cea565b90915550506000546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e759190613f5d565b506001830154604080518681526001600160801b038084166020830152600160801b909304909216908201526060810183905233907f85362f63fb0e3050a216decb3a7297e2aaff6cbf5b22583c073118d7efc8a47b906080016109d8565b60005b818110156113fd57612f06838383818110612ef457612ef4613d10565b905060200281019061040691906141cb565b80612f1081613d60565b915050612ed7565b6114a2813361329c565b60606000610eb7836132d5565b6000808383604051612f429291906140ad565b6040805191829003909120600081815260026020529190912080549093509091506001600160a01b0316612fb15760405162461bcd60e51b815260206004820152601660248201527511d85d195dd85e481b9bdd081c9959da5cdd195c995960521b6044820152606401610920565b9250929050565b80546001600160a01b031633146114a25760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e636044820152633a34b7b760e11b6064820152608401610920565b6000805160206144038339815191525460ff161561304e5760405163d93c066560e01b815260040160405180910390fd5b565b6000610eb78383613331565b60006000805160206143e38339815191526130778484611e51565b6130f7576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556130ad3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610bba565b6000915050610bba565b5092915050565b60006000805160206143e38339815191526131238484611e51565b156130f7576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610bba565b61318c61341a565b600080516020614403833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6131ec61344a565b6131f760003361305c565b506114a26000805160206143c38339815191523361305c565b61321861301d565b600080516020614403833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336131c6565b6000610bba825490565b6000610eb78383613493565b6000826001600160801b0316826001600160801b03161061329257506000610bba565b610eb7828461438c565b6132a68282611e51565b611af15760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610920565b60608160000180548060200260200160405190810160405280929190818152602001828054801561332557602002820191906000526020600020905b815481526020019060010190808311613311575b50505050509050919050565b600081815260018301602052604081205480156130f7576000613355600183613cfd565b855490915060009061336990600190613cfd565b90508082146133ce57600086600001828154811061338957613389613d10565b90600052602060002001549050808760000184815481106133ac576133ac613d10565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806133df576133df6143ac565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610bba565b6000805160206144038339815191525460ff1661304e57604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661304e57604051631afcd79f60e31b815260040160405180910390fd5b60008181526001830160205260408120546134da57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bba565b506000610bba565b5080546134ee90613d26565b6000825580601f106134fe575050565b601f0160209004906000526020600020908101906114a291905b8082111561352c5760008155600101613518565b5090565b6001600160a01b03811681146114a257600080fd5b803561355081613530565b919050565b80151581146114a257600080fd5b60008060006060848603121561357857600080fd5b833561358381613530565b9250602084013561359381613555565b915060408401356135a381613555565b809150509250925092565b600080604083850312156135c157600080fd5b50508035926020909101359150565b6000815180845260005b818110156135f6576020818501810151868301820152016135da565b506000602082860101526020601f19601f83011685010191505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366b57603f198886030184526136598583516135d0565b9450928501929085019060010161363d565b5092979650505050505050565b60006020828403121561368a57600080fd5b81356001600160e01b031981168114610eb757600080fd5b6000602082840312156136b457600080fd5b5035919050565b60008083601f8401126136cd57600080fd5b5081356001600160401b038111156136e457600080fd5b602083019150836020828501011115612fb157600080fd5b6000806000806040858703121561371257600080fd5b84356001600160401b038082111561372957600080fd5b613735888389016136bb565b9096509450602087013591508082111561374e57600080fd5b5061375b878288016136bb565b95989497509550505050565b6000806020838503121561377a57600080fd5b82356001600160401b0381111561379057600080fd5b61379c858286016136bb565b90969095509350505050565b6000602082840312156137ba57600080fd5b8135610eb781613530565b600080604083850312156137d857600080fd5b8235915060208301356137ea81613530565b809150509250929050565b6000806040838503121561380857600080fd5b823561381381613530565b915060208301356137ea81613530565b602081526000610eb760208301846135d0565b6001600160801b03811681146114a257600080fd5b6000806040838503121561385e57600080fd5b8235915060208301356137ea81613836565b634e487b7160e01b600052604160045260246000fd5b6000806000806060858703121561389c57600080fd5b84356001600160401b03808211156138b357600080fd5b6138bf888389016136bb565b909650945060208701359150808211156138d857600080fd5b818701915087601f8301126138ec57600080fd5b8135818111156138fe576138fe613870565b604051601f8201601f19908116603f0116810190838211818310171561392657613926613870565b816040528281528a602084870101111561393f57600080fd5b82602086016020830137600060208483010152809650505050505061396660408601613545565b905092959194509250565b60008083601f84011261398357600080fd5b5081356001600160401b0381111561399a57600080fd5b6020830191508360208260051b8501011115612fb157600080fd5b600080600080600080606087890312156139ce57600080fd5b86356001600160401b03808211156139e557600080fd5b6139f18a838b01613971565b90985096506020890135915080821115613a0a57600080fd5b613a168a838b01613971565b90965094506040890135915080821115613a2f57600080fd5b50613a3c89828a01613971565b979a9699509497509295939492505050565b60008060008060408587031215613a6457600080fd5b84356001600160401b0380821115613a7b57600080fd5b613a8788838901613971565b90965094506020870135915080821115613aa057600080fd5b5061375b87828801613971565b8060608101831015610bba57600080fd5b600080600080600060808688031215613ad657600080fd5b85356001600160401b0380821115613aed57600080fd5b613af989838a01613aad565b96506020880135915080821115613b0f57600080fd5b613b1b89838a01613aad565b95506040880135915080821115613b3157600080fd5b613b3d89838a01613971565b90955093506060880135915080821115613b5657600080fd5b50860160808189031215613b6957600080fd5b809150509295509295909350565b600060018060a01b0380835116845280602084015116602085015250604082015160806040850152613bac60808501826135d0565b905060608301518482036060860152613bc582826135d0565b95945050505050565b838152606060208201526000613be760608301856135d0565b8281036040840152613bf98185613b77565b9695505050505050565b600080600060408486031215613c1857600080fd5b83356001600160401b03811115613c2e57600080fd5b613c3a868287016136bb565b90945092505060208401356135a381613530565b602081526000610eb76020830184613b77565b600080600060608486031215613c7657600080fd5b83359250602084013561359381613836565b60008060208385031215613c9b57600080fd5b82356001600160401b03811115613cb157600080fd5b61379c85828601613971565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bba57610bba613cbd565b80820180821115610bba57610bba613cbd565b81810381811115610bba57610bba613cbd565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680613d3a57607f821691505b602082108103613d5a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060018201613d7257613d72613cbd565b5060010190565b601f8211156113fd57600081815260208120601f850160051c81016020861015613da05750805b601f850160051c820191505b81811015613dbf57828155600101613dac565b505050505050565b6001600160401b03831115613dde57613dde613870565b613df283613dec8354613d26565b83613d79565b6000601f841160018114613e265760008515613e0e5750838201355b600019600387901b1c1916600186901b178355611e4a565b600083815260209020601f19861690835b82811015613e575786850135825560209485019460019092019101613e37565b5086821015613e745760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000613ec3604083018688613e86565b8281036020840152613ed6818587613e86565b979650505050505050565b600060208284031215613ef357600080fd5b8151610eb781613530565b600060208284031215613f1057600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082613f3c57613f3c613f17565b500490565b602081526000613f55602083018486613e86565b949350505050565b600060208284031215613f6f57600080fd5b8151610eb781613555565b600060208284031215613f8c57600080fd5b8151610eb781613836565b600060208284031215613fa957600080fd5b815160ff81168114610eb757600080fd5b600181815b80851115613ff5578160001904821115613fdb57613fdb613cbd565b80851615613fe857918102915b93841c9390800290613fbf565b509250929050565b60008261400c57506001610bba565b8161401957506000610bba565b816001811461402f576002811461403957614055565b6001915050610bba565b60ff84111561404a5761404a613cbd565b50506001821b610bba565b5060208310610133831016604e8410600b8410161715614078575081810a610bba565b6140828383613fba565b806000190482111561409657614096613cbd565b029392505050565b6000610eb760ff841683613ffd565b8183823760009101908152919050565b81516001600160401b038111156140d6576140d6613870565b6140ea816140e48454613d26565b84613d79565b602080601f83116001811461411f57600084156141075750858301515b600019600386901b1c1916600185901b178555613dbf565b600085815260208120601f198616915b8281101561414e5788860151825594840194600190910190840161412f565b508582101561416c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000614190604083018587613e86565b8281036020840152613bf981856135d0565b6020808252600f908201526e098cadccee8d040dad2e6dac2e8c6d608b1b604082015260600190565b6000808335601e198436030181126141e257600080fd5b8301803591506001600160401b038211156141fc57600080fd5b602001915036819003821315612fb157600080fd5b81835260006001600160fb1b0383111561422a57600080fd5b8260051b80836020870137939093016020019392505050565b60608152600080875461425581613d26565b80606086015260806001808416600081146142775760018114614291576142c2565b60ff1985168884015283151560051b8801830195506142c2565b8c60005260208060002060005b868110156142b95781548b820187015290840190820161429e565b8a018501975050505b505050505082810360208401526142da818789614211565b905082810360408401526116a6818587614211565b604081526000614303604083018587613e86565b905060018060a01b0383166020830152949350505050565b6001600160801b0381811683821601908082111561310157613101613cbd565b60006001600160801b038084168061435557614355613f17565b92169190910492915050565b6001600160801b0381811683821602808216919082811461438457614384613cbd565b505092915050565b6001600160801b0382811682821603908082111561310157613101613cbd565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203e7e446a2b49d3628cc75a3e73294aabe2dc5a0bdc950c1ee7655505c6c610c464736f6c63430008140033", - "sourceMap": "1438:15877:84:-:0;;;2611:47;;;;;;;;;-1:-1:-1;2631:22:84;:20;:22::i;:::-;1438:15877;;7711:422:22;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:22;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:22;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:22;-1:-1:-1;;;;;8035:33:22;;;;;8087:29;;158:50:137;;;8087:29:22;;146:2:137;131:18;8087:29:22;;;;;;;7981:146;7760:373;7711:422::o;14:200:137:-;1438:15877:84;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106103275760003560e01c806382fbdc9c116101b8578063bc9c0e6211610104578063e63ab1e9116100a2578063f586857a1161007c578063f586857a1461084c578063f887ea401461085f578063fac5bb9b14610872578063fc0c546a1461088557600080fd5b8063e63ab1e91461081c578063e6c7f21b14610831578063eb4f16b51461083957600080fd5b8063d87113e5116100de578063d87113e5146107ce578063dacfab0d146107d6578063dcefedaf146107e9578063e3fa31ed1461080957600080fd5b8063bc9c0e62146107a9578063bdb001a7146107b2578063d547741f146107bb57600080fd5b806394f3c72511610171578063b1a7e2791161014b578063b1a7e2791461074e578063b785a2e614610761578063b8050a5d14610774578063bb952d4e1461078757600080fd5b806394f3c725146106ef57806398807d841461071a578063a217fddf1461074657600080fd5b806382fbdc9c1461065b5780638456cb591461066e57806385f4498b14610676578063876ab349146106b657806391d14854146106c957806392255fbf146106dc57600080fd5b806336568abe11610277578063485cc9551161023057806367c1def91161020a57806367c1def9146104eb57806375734be81461050e5780637a7664601461052e5780637acfc9e21461064857600080fd5b8063485cc955146104ad578063585a6a6d146104c05780635c975abb146104d357600080fd5b806336568abe146104395780633736d8531461044c5780633abcf38c1461045f5780633f4ba83a14610472578063429773fb1461047a57806344d4bea81461049a57600080fd5b80631c0fa1c8116102e457806327d6c032116102be57806327d6c032146103f85780632c17a07f1461040b5780632def66201461041e5780632f2ff15d1461042657600080fd5b80631c0fa1c8146103bb578063233dedf1146103dc578063248a9ca3146103e557600080fd5b8063017a02c31461032c57806301a993561461034157806301ffc9a71461036a5780630def8b8a1461038d5780630fe9fb66146103a057806313f117f2146103b3575b600080fd5b61033f61033a366004613563565b610898565b005b61035461034f3660046135ae565b6109e6565b6040516103619190613616565b60405180910390f35b61037d610378366004613678565b610bc0565b6040519015158152602001610361565b61033f61039b3660046136a2565b610bf5565b61033f6103ae3660046136fc565b610c3d565b61033f610cb3565b6103ce6103c93660046135ae565b610d7c565b604051908152602001610361565b6103ce600a5481565b6103ce6103f33660046136a2565b610ebe565b61033f610406366004613767565b610ee0565b6103546104193660046137a8565b611020565b61033f611197565b61033f6104343660046137c5565b6113a8565b61033f6104473660046137c5565b6113ca565b61033f61045a3660046136a2565b611402565b61033f61046d3660046136a2565b611442565b61033f611482565b6103ce6104883660046137a8565b60046020526000908152604090205481565b6103ce6104a8366004613767565b6114a5565b61033f6104bb3660046137f5565b6116b2565b6103546104ce366004613767565b61189f565b6000805160206144038339815191525460ff1661037d565b61037d6104f93660046137a8565b60076020526000908152604090205460ff1681565b61052161051c366004613767565b611a25565b6040516103619190613823565b6105e961053c3660046137a8565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506001600160a01b0316600090815260036020818152604092839020835160c0810185526001820154815260028201546001600160801b0380821694830194909452600160801b9081900484169582019590955292810154918216606084015292900460ff161515608082015260049091015460a082015290565b6040516103619190600060c0820190508251825260208301516001600160801b038082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015260a083015160a083015292915050565b61033f61065636600461384b565b611ae5565b61033f610669366004613767565b611af5565b61033f611b11565b61037d6106843660046137a8565b6001600160a01b031660009081526003602052604090206002015443600160801b9091046001600160801b0316111590565b61033f6106c4366004613886565b611b31565b61037d6106d73660046137c5565b611e51565b61033f6106ea3660046136fc565b611e89565b6107026106fd366004613767565b611eca565b6040516001600160a01b039091168152602001610361565b6103ce6107283660046137a8565b6001600160a01b031660009081526003602052604090206001015490565b6103ce600081565b61033f61075c3660046139b5565b611f01565b61033f61076f366004613a4e565b612005565b61033f6107823660046137a8565b612261565b61079a610795366004613abe565b61233f565b60405161036193929190613bce565b6103ce600c5481565b6103ce600b5481565b61033f6107c93660046137c5565b612377565b6103ce612393565b61033f6107e4366004613c03565b6123a4565b6107fc6107f7366004613767565b6124de565b6040516103619190613c4e565b61033f610817366004613c61565b612685565b6103ce6000805160206143c383398151915281565b61033f612a4b565b61033f6108473660046136a2565b612b73565b61033f61085a366004613c88565b612ed4565b600154610702906001600160a01b031681565b600854610702906001600160a01b031681565b600054610702906001600160a01b031681565b60006108a381612f18565b821580156108c5575081806108c557506008546001600160a01b038581169116145b156109295760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742073657420646973616c6c6f77656420737472617465677920616044820152681cc8191959985d5b1d60ba1b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600760205260409020805460ff1916841515179055811561099b57600880546001600160a01b0319166001600160a01b0386169081179091556040517f84e184ce3e506721b995db9e77ad7527e97c83dd04bf98f5830508602bf837ad90600090a25b836001600160a01b03167f4e8e4980b101f6a8ebe870c7cf3767fb92422ef0c95a65b5cd750f9fce3c26e0846040516109d8911515815260200190565b60405180910390a250505050565b606060006109f46005612f22565b90506000610a028585613cd3565b90508151811115610a42576040805160008082526020820190925290610a38565b6060815260200190600190039081610a235790505b5092505050610bba565b6000610a4e8583613cea565b90508251811115610a5d575081515b6000610a698383613cfd565b6001600160401b03811115610a8057610a80613870565b604051908082528060200260200182016040528015610ab357816020015b6060815260200190600190039081610a9e5790505b509050825b82811015610bb35760026000868381518110610ad657610ad6613d10565b602002602001015181526020019081526020016000206002018054610afa90613d26565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2690613d26565b8015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050828583610b859190613cfd565b81518110610b9557610b95613d10565b60200260200101819052508080610bab90613d60565b915050610ab8565b5093505050505b92915050565b60006001600160e01b03198216637965db0b60e01b1480610bba57506301ffc9a760e01b6001600160e01b0319831614610bba565b6000610c0081612f18565b600b8290556040518281527fd48c454cdec818a86733db9fd6353a7b80d423e6a189ecac47703f9b5fa0801b906020015b60405180910390a15050565b6000610c498585612f2f565b509050610c5581612fb8565b60038101610c64838583613dc7565b50336001600160a01b03167f512a85d60acb1212e9e49cec8fc20daed3ed43977be6a8db77faf2c859e79e7f86868686604051610ca49493929190613eaf565b60405180910390a25050505050565b33600090815260036020819052604090912090810154600190910190600160801b900460ff1615610d1e5760405162461bcd60e51b8152602060048201526015602482015274105d5d1bd15e1d195b9cda5bdb88195b98589b1959605a1b6044820152606401610920565b60028101805460ff60801b1916600160801b1790556001810180546001600160801b03166001600160801b031917905560405133907feff5f78e20f1cd92a537c3cdbaeaea11ad293aace5d7262ed93f2f33b42a828f90600090a250565b6000600954612710610d8e9190613cd3565b610d9a906103e8613cd3565b600160009054906101000a90046001600160a01b03166001600160a01b0316638f0b335e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190613ee1565b6001600160a01b031663e9c85672600a5485610e2d9190613cd3565b6040518263ffffffff1660e01b8152600401610e4b91815260200190565b602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190613efe565b600b54610e998587613cd3565b610ea39190613cd3565b610ead9190613cd3565b610eb79190613f2d565b9392505050565b60009081526000805160206143e3833981519152602052604090206001015490565b610ee861301d565b600080610ef58484612f2f565b91509150610f0282612fb8565b336000908152600360205260409020610f1e9060050182613050565b610f745760405162461bcd60e51b815260206004820152602160248201527f47617465776179206e6f742072656d6f7665642066726f6d206f70657261746f6044820152603960f91b6064820152608401610920565b610f7f600582613050565b506001808301546001600160a01b03166000908152600460209081526040808320839055848352600291829052822080546001600160a01b031990811682559381018054909416909355610fd5908301826134e2565b610fe36003830160006134e2565b5050336001600160a01b03167fa133cd95a0c9cb4f8272f86cd3bb48ba2bf54f982e60bba1618e1286925eddec85856040516109d8929190613f41565b6001600160a01b03811660009081526003602052604081206060919061104890600501612f22565b9050600081516001600160401b0381111561106557611065613870565b60405190808252806020026020018201604052801561109857816020015b60608152602001906001900390816110835790505b50905060005b825181101561118f57600260008483815181106110bd576110bd613d10565b6020026020010151815260200190815260200160002060020180546110e190613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90613d26565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505082828151811061117157611171613d10565b6020026020010181905250808061118790613d60565b91505061109e565b509392505050565b61119f61301d565b3360009081526003602052604090206002015443600160801b9091046001600160801b031611156112045760405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481a5cc81b1bd8dad959608a1b6044820152606401610920565b33600090815260036020526040902060010154806112595760405162461bcd60e51b81526020600482015260126024820152714e6f7468696e6720746f20756e7374616b6560701b6044820152606401610920565b33600090815260036020526040812061127490600501612f22565b905060005b81518110156112c2576112af82828151811061129757611297613d10565b6020026020010151600561305090919063ffffffff16565b50806112ba81613d60565b915050611279565b50336000818152600360208190526040808320600181018490556002810184905591820180546001600160881b031916905560049182018390559154915163a9059cbb60e01b815290810192909252602482018490526001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e9190613f5d565b5060405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b6113b182610ebe565b6113ba81612f18565b6113c4838361305c565b50505050565b6001600160a01b03811633146113f35760405163334bd91960e11b815260040160405180910390fd5b6113fd8282613108565b505050565b600061140d81612f18565b600a8290556040518281527f46a9c997a4d81c1f992b7ec20e34dfc97c0c67a86dc24f9ff1525718690bead390602001610c31565b600061144d81612f18565b600c8290556040518281527ff092d674fd06aab53c483be96eb202422ad493b452660e05adfe7f02aca08c1f90602001610c31565b6000805160206143c383398151915261149a81612f18565b6114a2613184565b50565b6000806114b28484612f2f565b5080546001600160a01b0316600090815260036020818152604092839020835160c0810185526001820154815260028201546001600160801b0380821694830194909452600160801b9081900484169582018690529382015492831660608201529290910460ff16151560808301526004015460a0820152919250439081106115415760009350505050610bba565b60008183602001516001600160801b03161161157757611572836000015184606001516001600160801b0316610d7c565b61157d565b8260a001515b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190613ee1565b6001600160a01b03166357d775f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190613f7a565b6001600160801b031690508084606001516001600160801b03161161168457509350610bba92505050565b60608401516001600160801b031661169c8284613cd3565b6116a69190613f2d565b98975050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156116f75750825b90506000826001600160401b031660011480156117135750303b155b905081158015611721575080155b1561173f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561176957845460ff60401b1916600160401b1785555b6117716131e4565b600080546001600160a01b03808a166001600160a01b0319928316811790935560018054918a16919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe9190613f97565b61180990600a61409e565b6009556000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805460ff19166001179055600c600a8181556103e8600b559055831561189657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b606060006118ad8484612f2f565b5080546001600160a01b03166000908152600360205260408120919250906118d790600501612f22565b905080516001600160401b038111156118f2576118f2613870565b60405190808252806020026020018201604052801561192557816020015b60608152602001906001900390816119105790505b50925060005b8151811015611a1c576002600083838151811061194a5761194a613d10565b60200260200101518152602001908152602001600020600201805461196e90613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461199a90613d26565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b50505050508482815181106119fe576119fe613d10565b60200260200101819052508080611a1490613d60565b91505061192b565b50505092915050565b6060600260008484604051611a3b9291906140ad565b604051809103902081526020019081526020016000206003018054611a5f90613d26565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b90613d26565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b5050505050905092915050565b611af182826000612685565b5050565b611af18282604051806020016040528060008152506000611b31565b6000805160206143c3833981519152611b2981612f18565b6114a2613210565b611b3961301d565b82611b865760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742073657420656d707479207065657249640000000000000000006044820152606401610920565b60008484604051611b989291906140ad565b60408051918290039091206000818152600260205291909120549091506001600160a01b031615611c0b5760405162461bcd60e51b815260206004820152601960248201527f50656572496420616c72656164792072656769737465726564000000000000006044820152606401610920565b600c54336000908152600360205260409020611c2990600501613259565b10611c765760405162461bcd60e51b815260206004820181905260248201527f546f6f206d616e7920676174657761797320696e2074686520636c75737465726044820152606401610920565b3360009081526003602052604090205460ff16611ca257600854611ca2906001600160a01b0316612261565b6040518060800160405280336001600160a01b03168152602001836001600160a01b0316815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060209182018690528381526002808352604091829020845181546001600160a01b03199081166001600160a01b03928316178355948601516001830180549096169116179093559083015190820190611d5c90826140bd565b5060608201516003820190611d7190826140bd565b5050336000908152600360205260409020611d90915060050182613263565b503360009081526003602052604090206001015415611db657611db4600582613263565b505b80336001600160a01b03167fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1998787604051611df2929190613f41565b60405180910390a3336001600160a01b03167f512a85d60acb1212e9e49cec8fc20daed3ed43977be6a8db77faf2c859e79e7f868686604051611e379392919061417c565b60405180910390a2611e4a8585846123a4565b5050505050565b60009182526000805160206143e3833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6113c4848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611b31915050565b600080611ed78484612f2f565b50546001600160a01b03908116600090815260036020526040902054610100900416949350505050565b848314611f205760405162461bcd60e51b8152600401610920906141a2565b848114611f3f5760405162461bcd60e51b8152600401610920906141a2565b60005b8581101561189657611ff3878783818110611f5f57611f5f613d10565b9050602002810190611f7191906141cb565b878785818110611f8357611f83613d10565b9050602002810190611f9591906141cb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250889150879050818110611fde57611fde613d10565b90506020020160208101906106c491906137a8565b80611ffd81613d60565b915050611f42565b61200d61301d565b82811461202c5760405162461bcd60e51b8152600401610920906141a2565b33600090815260046020818152604080842054845260028252808420600154825163367fed3f60e21b8152925191959485946001600160a01b039092169363d9ffb4fc93818301939290918290030181865afa158015612090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b49190613ee1565b6001600160a01b031663c84a49226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121159190613efe565b905060005b868110156121b9578188888381811061213557612135613d10565b90506020020135106121815760405162461bcd60e51b815260206004820152601560248201527415dbdc9ad95c88191bd95cc81b9bdd08195e1a5cdd605a1b6044820152606401610920565b85858281811061219357612193613d10565b90506020020135836121a59190613cea565b9250806121b181613d60565b91505061211a565b5061271082111561220c5760405162461bcd60e51b815260206004820152601a60248201527f4f7665722031303025206f662043557320616c6c6f63617465640000000000006044820152606401610920565b336001600160a01b03167fa27699da150f8443c51cda13c28a1cbfb78ee3b4055de58197e770999fc23fbd8460020189898989604051612250959493929190614243565b60405180910390a250505050505050565b6001600160a01b03811660009081526007602052604090205460ff166122c05760405162461bcd60e51b815260206004820152601460248201527314dd1c985d1959de481b9bdd08185b1b1bddd95960621b6044820152606401610920565b3360008181526003602052604090819020805460ff196001600160a01b03861661010002166001600160a81b0319909116176001179055517fe31c0bedb29ec4df4a7c3d8d8c0e4ad6bf3648906837d5400d61a94410c5e5bb906123349084906001600160a01b0391909116815260200190565b60405180910390a250565b6000606061236c604080516080810182526000808252602082015260609181018290528181019190915290565b955095509592505050565b61238082610ebe565b61238981612f18565b6113c48383613108565b600061239f6005613259565b905090565b6000806123b18585612f2f565b915091506123be82612fb8565b60018201546001600160a01b0316156123ef5760018201546001600160a01b03166000908152600460205260408120555b6001600160a01b0383161561248b576001600160a01b0383166000908152600460205260409020541561246f5760405162461bcd60e51b815260206004820152602260248201527f47617465776179206164647265737320616c7265616479207265676973746572604482015261195960f21b6064820152608401610920565b6001600160a01b03831660009081526004602052604090208190555b6001820180546001600160a01b0319166001600160a01b03851617905560405133907f39cabfa8731da74e931aee9746250190051269d4d0c37ec9fb8276a32b1f660190610ca4908890889088906142ef565b60408051608081018252600080825260208201526060918101829052818101919091526002600084846040516125159291906140ad565b60408051918290039091208252602080830193909352908101600020815160808101835281546001600160a01b03908116825260018301541693810193909352600281018054919284019161256990613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461259590613d26565b80156125e25780601f106125b7576101008083540402835291602001916125e2565b820191906000526020600020905b8154815290600101906020018083116125c557829003601f168201915b505050505081526020016003820180546125fb90613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461262790613d26565b80156126745780601f1061264957610100808354040283529160200191612674565b820191906000526020600020905b81548152906001019060200180831161265757829003601f168201915b505050505081525050905092915050565b61268d61301d565b33600090815260036020526040902060010154156127015760405162461bcd60e51b815260206004820152602b60248201527f5374616b6520616c7265616479206578697374732c2063616c6c20616464537460448201526a185ad9481a5b9cdd19585960aa1b6064820152608401610920565b600061271684846001600160801b0316610d7c565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190613ee1565b6001600160a01b031663aea0e78b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f29190613f7a565b905060008361280a57612805858361431b565b612813565b6001600160801b035b6040805160c0810182528881526001600160801b0385811660208084019182528583168486019081528b8416606086019081528b151560808701908152600060a088018181523382526003958690529881209751600189015594519251928616600160801b9387168402176002880155905192860180549151939095166001600160881b031990911617911515021790915591516004820155919250906128bc90600501612f22565b905060005b815181101561290a576128f78282815181106128df576128df613d10565b6020026020010151600561326390919063ffffffff16565b508061290281613d60565b9150506128c1565b506000546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129869190613f5d565b50604080518881526001600160801b03858116602083015284168183015260608101869052905133917f85362f63fb0e3050a216decb3a7297e2aaff6cbf5b22583c073118d7efc8a47b919081900360800190a28415612a105760405133907feff5f78e20f1cd92a537c3cdbaeaea11ad293aace5d7262ed93f2f33b42a828f90600090a2611896565b6040516001600160801b038316815233907f17679fc77cdf7f6b7d2af4cb30497f3e81088fde6fdb20ca48d31372bc2af00690602001612250565b33600090815260036020819052604090912090810154600190910190600160801b900460ff16612ab65760405162461bcd60e51b8152602060048201526016602482015275105d5d1bd15e1d195b9cda5bdb88191a5cd8589b195960521b6044820152606401610920565b60028101805460ff60801b19811690915560018201546001600160801b03918216918291612ae69143911661326f565b612af0919061433b565b612afb90600161431b565b612b059190614361565b6001820154612b1d91906001600160801b031661431b565b6001820180546001600160801b03908116600160801b938216840217918290556040519290910416815233907f17679fc77cdf7f6b7d2af4cb30497f3e81088fde6fdb20ca48d31372bc2af00690602001612334565b612b7b61301d565b3360009081526003602052604090206001018054612bec5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420616464207374616b65207768656e206e6f7468696e672077616044820152671cc81cdd185ad95960c21b6064820152608401610920565b6001810154436001600160801b039091161115612c425760405162461bcd60e51b815260206004820152601460248201527314dd185ad9481a5cc81b9bdd081cdd185c9d195960621b6044820152606401610920565b6002810154600090612c5e9084906001600160801b0316610d7c565b82546002840154919250600091612c7e91906001600160801b0316610d7c565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663853b97c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf79190613ee1565b6001600160a01b031663aea0e78b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d589190613f7a565b6001840180546001600160801b0319166001600160801b03929092169190911790556002830154600160801b900460ff16612db25760028301546001840154612dad916001600160801b03908116911661431b565b612dbb565b6001600160801b035b6001840180546001600160801b03928316600160801b02921691909117905560038301819055825484908490600090612df5908490613cea565b90915550506000546040516323b872dd60e01b8152336004820152306024820152604481018690526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e759190613f5d565b506001830154604080518681526001600160801b038084166020830152600160801b909304909216908201526060810183905233907f85362f63fb0e3050a216decb3a7297e2aaff6cbf5b22583c073118d7efc8a47b906080016109d8565b60005b818110156113fd57612f06838383818110612ef457612ef4613d10565b905060200281019061040691906141cb565b80612f1081613d60565b915050612ed7565b6114a2813361329c565b60606000610eb7836132d5565b6000808383604051612f429291906140ad565b6040805191829003909120600081815260026020529190912080549093509091506001600160a01b0316612fb15760405162461bcd60e51b815260206004820152601660248201527511d85d195dd85e481b9bdd081c9959da5cdd195c995960521b6044820152606401610920565b9250929050565b80546001600160a01b031633146114a25760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e636044820152633a34b7b760e11b6064820152608401610920565b6000805160206144038339815191525460ff161561304e5760405163d93c066560e01b815260040160405180910390fd5b565b6000610eb78383613331565b60006000805160206143e38339815191526130778484611e51565b6130f7576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556130ad3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610bba565b6000915050610bba565b5092915050565b60006000805160206143e38339815191526131238484611e51565b156130f7576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610bba565b61318c61341a565b600080516020614403833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6131ec61344a565b6131f760003361305c565b506114a26000805160206143c38339815191523361305c565b61321861301d565b600080516020614403833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336131c6565b6000610bba825490565b6000610eb78383613493565b6000826001600160801b0316826001600160801b03161061329257506000610bba565b610eb7828461438c565b6132a68282611e51565b611af15760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610920565b60608160000180548060200260200160405190810160405280929190818152602001828054801561332557602002820191906000526020600020905b815481526020019060010190808311613311575b50505050509050919050565b600081815260018301602052604081205480156130f7576000613355600183613cfd565b855490915060009061336990600190613cfd565b90508082146133ce57600086600001828154811061338957613389613d10565b90600052602060002001549050808760000184815481106133ac576133ac613d10565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806133df576133df6143ac565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610bba565b6000805160206144038339815191525460ff1661304e57604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661304e57604051631afcd79f60e31b815260040160405180910390fd5b60008181526001830160205260408120546134da57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bba565b506000610bba565b5080546134ee90613d26565b6000825580601f106134fe575050565b601f0160209004906000526020600020908101906114a291905b8082111561352c5760008155600101613518565b5090565b6001600160a01b03811681146114a257600080fd5b803561355081613530565b919050565b80151581146114a257600080fd5b60008060006060848603121561357857600080fd5b833561358381613530565b9250602084013561359381613555565b915060408401356135a381613555565b809150509250925092565b600080604083850312156135c157600080fd5b50508035926020909101359150565b6000815180845260005b818110156135f6576020818501810151868301820152016135da565b506000602082860101526020601f19601f83011685010191505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561366b57603f198886030184526136598583516135d0565b9450928501929085019060010161363d565b5092979650505050505050565b60006020828403121561368a57600080fd5b81356001600160e01b031981168114610eb757600080fd5b6000602082840312156136b457600080fd5b5035919050565b60008083601f8401126136cd57600080fd5b5081356001600160401b038111156136e457600080fd5b602083019150836020828501011115612fb157600080fd5b6000806000806040858703121561371257600080fd5b84356001600160401b038082111561372957600080fd5b613735888389016136bb565b9096509450602087013591508082111561374e57600080fd5b5061375b878288016136bb565b95989497509550505050565b6000806020838503121561377a57600080fd5b82356001600160401b0381111561379057600080fd5b61379c858286016136bb565b90969095509350505050565b6000602082840312156137ba57600080fd5b8135610eb781613530565b600080604083850312156137d857600080fd5b8235915060208301356137ea81613530565b809150509250929050565b6000806040838503121561380857600080fd5b823561381381613530565b915060208301356137ea81613530565b602081526000610eb760208301846135d0565b6001600160801b03811681146114a257600080fd5b6000806040838503121561385e57600080fd5b8235915060208301356137ea81613836565b634e487b7160e01b600052604160045260246000fd5b6000806000806060858703121561389c57600080fd5b84356001600160401b03808211156138b357600080fd5b6138bf888389016136bb565b909650945060208701359150808211156138d857600080fd5b818701915087601f8301126138ec57600080fd5b8135818111156138fe576138fe613870565b604051601f8201601f19908116603f0116810190838211818310171561392657613926613870565b816040528281528a602084870101111561393f57600080fd5b82602086016020830137600060208483010152809650505050505061396660408601613545565b905092959194509250565b60008083601f84011261398357600080fd5b5081356001600160401b0381111561399a57600080fd5b6020830191508360208260051b8501011115612fb157600080fd5b600080600080600080606087890312156139ce57600080fd5b86356001600160401b03808211156139e557600080fd5b6139f18a838b01613971565b90985096506020890135915080821115613a0a57600080fd5b613a168a838b01613971565b90965094506040890135915080821115613a2f57600080fd5b50613a3c89828a01613971565b979a9699509497509295939492505050565b60008060008060408587031215613a6457600080fd5b84356001600160401b0380821115613a7b57600080fd5b613a8788838901613971565b90965094506020870135915080821115613aa057600080fd5b5061375b87828801613971565b8060608101831015610bba57600080fd5b600080600080600060808688031215613ad657600080fd5b85356001600160401b0380821115613aed57600080fd5b613af989838a01613aad565b96506020880135915080821115613b0f57600080fd5b613b1b89838a01613aad565b95506040880135915080821115613b3157600080fd5b613b3d89838a01613971565b90955093506060880135915080821115613b5657600080fd5b50860160808189031215613b6957600080fd5b809150509295509295909350565b600060018060a01b0380835116845280602084015116602085015250604082015160806040850152613bac60808501826135d0565b905060608301518482036060860152613bc582826135d0565b95945050505050565b838152606060208201526000613be760608301856135d0565b8281036040840152613bf98185613b77565b9695505050505050565b600080600060408486031215613c1857600080fd5b83356001600160401b03811115613c2e57600080fd5b613c3a868287016136bb565b90945092505060208401356135a381613530565b602081526000610eb76020830184613b77565b600080600060608486031215613c7657600080fd5b83359250602084013561359381613836565b60008060208385031215613c9b57600080fd5b82356001600160401b03811115613cb157600080fd5b61379c85828601613971565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bba57610bba613cbd565b80820180821115610bba57610bba613cbd565b81810381811115610bba57610bba613cbd565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680613d3a57607f821691505b602082108103613d5a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060018201613d7257613d72613cbd565b5060010190565b601f8211156113fd57600081815260208120601f850160051c81016020861015613da05750805b601f850160051c820191505b81811015613dbf57828155600101613dac565b505050505050565b6001600160401b03831115613dde57613dde613870565b613df283613dec8354613d26565b83613d79565b6000601f841160018114613e265760008515613e0e5750838201355b600019600387901b1c1916600186901b178355611e4a565b600083815260209020601f19861690835b82811015613e575786850135825560209485019460019092019101613e37565b5086821015613e745760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000613ec3604083018688613e86565b8281036020840152613ed6818587613e86565b979650505050505050565b600060208284031215613ef357600080fd5b8151610eb781613530565b600060208284031215613f1057600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082613f3c57613f3c613f17565b500490565b602081526000613f55602083018486613e86565b949350505050565b600060208284031215613f6f57600080fd5b8151610eb781613555565b600060208284031215613f8c57600080fd5b8151610eb781613836565b600060208284031215613fa957600080fd5b815160ff81168114610eb757600080fd5b600181815b80851115613ff5578160001904821115613fdb57613fdb613cbd565b80851615613fe857918102915b93841c9390800290613fbf565b509250929050565b60008261400c57506001610bba565b8161401957506000610bba565b816001811461402f576002811461403957614055565b6001915050610bba565b60ff84111561404a5761404a613cbd565b50506001821b610bba565b5060208310610133831016604e8410600b8410161715614078575081810a610bba565b6140828383613fba565b806000190482111561409657614096613cbd565b029392505050565b6000610eb760ff841683613ffd565b8183823760009101908152919050565b81516001600160401b038111156140d6576140d6613870565b6140ea816140e48454613d26565b84613d79565b602080601f83116001811461411f57600084156141075750858301515b600019600386901b1c1916600185901b178555613dbf565b600085815260208120601f198616915b8281101561414e5788860151825594840194600190910190840161412f565b508582101561416c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000614190604083018587613e86565b8281036020840152613bf981856135d0565b6020808252600f908201526e098cadccee8d040dad2e6dac2e8c6d608b1b604082015260600190565b6000808335601e198436030181126141e257600080fd5b8301803591506001600160401b038211156141fc57600080fd5b602001915036819003821315612fb157600080fd5b81835260006001600160fb1b0383111561422a57600080fd5b8260051b80836020870137939093016020019392505050565b60608152600080875461425581613d26565b80606086015260806001808416600081146142775760018114614291576142c2565b60ff1985168884015283151560051b8801830195506142c2565b8c60005260208060002060005b868110156142b95781548b820187015290840190820161429e565b8a018501975050505b505050505082810360208401526142da818789614211565b905082810360408401526116a6818587614211565b604081526000614303604083018587613e86565b905060018060a01b0383166020830152949350505050565b6001600160801b0381811683821601908082111561310157613101613cbd565b60006001600160801b038084168061435557614355613f17565b92169190910492915050565b6001600160801b0381811683821602808216919082811461438457614384613cbd565b505092915050565b6001600160801b0382811682821603908082111561310157613101613cbd565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203e7e446a2b49d3628cc75a3e73294aabe2dc5a0bdc950c1ee7655505c6c610c464736f6c63430008140033", - "sourceMap": "1438:15877:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13565:454;;;;;;:::i;:::-;;:::i;:::-;;16316:572;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3443:202:21;;;;;;:::i;:::-;;:::i;:::-;;;2875:14:137;;2868:22;2850:41;;2838:2;2823:18;3443:202:21;2710:187:137;14023:132:84;;;;;;:::i;:::-;;:::i;12459:259::-;;;;;;:::i;:::-;;:::i;14878:278::-;;;:::i;10837:282::-;;;;;;:::i;:::-;;:::i;:::-;;;4308:25:137;;;4296:2;4281:18;10837:282:84;4162:177:137;2355:31:84;;;;;;4759:191:21;;;;;;:::i;:::-;;:::i;5133:444:84:-;;;;;;:::i;:::-;;:::i;15690:327::-;;;;;;:::i;:::-;;:::i;8033:532::-;;;:::i;5246:136:21:-;;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;:::i;:::-;;:::i;14159:204:84:-;;;;;;:::i;:::-;;:::i;14367:225::-;;;;;;:::i;:::-;;:::i;843:77::-;;;:::i;2012:61::-;;;;;;:::i;:::-;;;;;;;;;;;;;;9210:682;;;;;;:::i;:::-;;:::i;2662:359::-;;;;;;:::i;:::-;;:::i;12019:436::-;;;;;;:::i;:::-;;:::i;2692:145:24:-;-1:-1:-1;;;;;;;;;;;2821:9:24;;;2692:145;;2187:58:84;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11803:136;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11552:116::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11638:19:84;;;;;:9;:19;;;;;;;;;11631:32;;;;;;;11638:25;;;11631:32;;;;;;;-1:-1:-1;;;;;11631:32:84;;;;;;;;;;-1:-1:-1;;;11631:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11552:116;;;;;;;6499:4:137;6541:3;6530:9;6526:19;6518:27;;6578:6;6572:13;6561:9;6554:32;6633:4;6625:6;6621:17;6615:24;-1:-1:-1;;;;;6748:2:137;6734:12;6730:21;6723:4;6712:9;6708:20;6701:51;6820:2;6812:4;6804:6;6800:17;6794:24;6790:33;6783:4;6772:9;6768:20;6761:63;6892:2;6884:4;6876:6;6872:17;6866:24;6862:33;6855:4;6844:9;6840:20;6833:63;;;6966:4;6958:6;6954:17;6948:24;6941:32;6934:40;6927:4;6916:9;6912:20;6905:70;7031:4;7023:6;7019:17;7013:24;7006:4;6995:9;6991:20;6984:54;6359:685;;;;;6896:111:84;;;;;;:::i;:::-;;:::i;3025:93::-;;;;;;:::i;:::-;;:::i;766:73::-;;;:::i;11363:132::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11441:19:84;11422:4;11441:19;;;:9;:19;;;;;:33;;;11478:12;-1:-1:-1;;;11441:33:84;;;-1:-1:-1;;;;;11441:33:84;:49;;;11363:132;3990:961;;;;;;:::i;:::-;;:::i;3732:207:21:-;;;;;;:::i;:::-;;:::i;3122:125:84:-;;;;;;:::i;:::-;;:::i;8929:188::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;9104:32:137;;;9086:51;;9074:2;9059:18;8929:188:84;8940:203:137;11176:116:84;;;;;;:::i;:::-;-1:-1:-1;;;;;11255:19:84;11233:7;11255:19;;;:9;:19;;;;;:25;;:32;;11176:116;2317:49:21;;2362:4;2317:49;;3342:373:84;;;;;;:::i;:::-;;:::i;10090:647::-;;;;;;:::i;:::-;;:::i;8653:272::-;;;;;;:::i;:::-;;:::i;16021:180::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2570:36::-;;;;;;2483:19;;;;;;5662:138:21;;;;;;:::i;:::-;;:::i;16205:107:84:-;;;:::i;12828:588::-;;;;;;:::i;:::-;;:::i;11672:127::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5888:1004::-;;;;;;:::i;:::-;;:::i;553:62::-;;-1:-1:-1;;;;;;;;;;;553:62:84;;15283:403;;;:::i;7057:835::-;;;;;;:::i;:::-;;:::i;4955:144::-;;;;;;:::i;:::-;;:::i;1862:21::-;;;;;-1:-1:-1;;;;;1862:21:84;;;2249:30;;;;;-1:-1:-1;;;;;2249:30:84;;;1827:31;;;;;-1:-1:-1;;;;;1827:31:84;;;13565:454;2362:4:21;3191:16;2362:4;3191:10;:16::i;:::-;13694:9:84::1;13693:10;:56;;;;;13708:9;:40;;;-1:-1:-1::0;13721:15:84::1;::::0;-1:-1:-1;;;;;13721:27:84;;::::1;:15:::0;::::1;:27;13708:40;13689:128;;;13759:51;::::0;-1:-1:-1;;;13759:51:84;;16376:2:137;13759:51:84::1;::::0;::::1;16358:21:137::0;16415:2;16395:18;;;16388:30;16454:34;16434:18;;;16427:62;-1:-1:-1;;;16505:18:137;;;16498:39;16554:19;;13759:51:84::1;;;;;;;;13689:128;-1:-1:-1::0;;;;;13822:27:84;::::1;;::::0;;;:17:::1;:27;::::0;;;;:39;;-1:-1:-1;;13822:39:84::1;::::0;::::1;;;::::0;;13867:101;::::1;;;13890:15;:26:::0;;-1:-1:-1;;;;;;13890:26:84::1;-1:-1:-1::0;;;;;13890:26:84;::::1;::::0;;::::1;::::0;;;13929:32:::1;::::0;::::1;::::0;-1:-1:-1;;13929:32:84::1;13867:101;13994:8;-1:-1:-1::0;;;;;13978:36:84::1;;14004:9;13978:36;;;;2875:14:137::0;2868:22;2850:41;;2838:2;2823:18;;2710:187;13978:36:84::1;;;;;;;;13565:454:::0;;;;:::o;16316:572::-;16403:14;16425:27;16455:23;:14;:21;:23::i;:::-;16425:53;-1:-1:-1;16484:13:84;16500:20;16510:10;16500:7;:20;:::i;:::-;16484:36;;16538:10;:17;16530:5;:25;16526:67;;;16572:14;;;16584:1;16572:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16565:21;;;;;;16526:67;16598:11;16612:15;16620:7;16612:5;:15;:::i;:::-;16598:29;;16643:10;:17;16637:3;:23;16633:67;;;-1:-1:-1;16676:17:84;;16633:67;16705:22;16742:11;16748:5;16742:3;:11;:::i;:::-;-1:-1:-1;;;;;16730:24:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16705:49:84;-1:-1:-1;16777:5:84;16760:104;16788:3;16784:1;:7;16760:104;;;16827:8;:23;16836:10;16847:1;16836:13;;;;;;;;:::i;:::-;;;;;;;16827:23;;;;;;;;;;;:30;;16806:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;16818:5;16814:1;:9;;;;:::i;:::-;16806:18;;;;;;;;:::i;:::-;;;;;;:51;;;;16793:3;;;;;:::i;:::-;;;;16760:104;;;-1:-1:-1;16876:7:84;-1:-1:-1;;;;16316:572:84;;;;;:::o;3443:202:21:-;3528:4;-1:-1:-1;;;;;;3551:47:21;;-1:-1:-1;;;3551:47:21;;:87;;-1:-1:-1;;;;;;;;;;1133:40:25;;;3602:36:21;1034:146:25;14023:132:84;2362:4:21;3191:16;2362:4;3191:10;:16::i;:::-;14102:4:84::1;:15:::0;;;14129:21:::1;::::0;4308:25:137;;;14129:21:84::1;::::0;4296:2:137;4281:18;14129:21:84::1;;;;;;;;14023:132:::0;;:::o;12459:259::-;12545:23;12573:19;12585:6;;12573:11;:19::i;:::-;12544:48;;;12598:25;12615:7;12598:16;:25::i;:::-;12629:16;;;:27;12648:8;;12629:16;:27;:::i;:::-;;12684:10;-1:-1:-1;;;;;12668:45:84;;12696:6;;12704:8;;12668:45;;;;;;;;;:::i;:::-;;;;;;;;12538:180;12459:259;;;;:::o;14878:278::-;14957:10;14924:20;14947:21;;;:9;:21;;;;;;;;14989:20;;;;14947:27;;;;;-1:-1:-1;;;14989:20:84;;;;14988:21;14980:55;;;;-1:-1:-1;;;14980:55:84;;20778:2:137;14980:55:84;;;20760:21:137;20817:2;20797:18;;;20790:30;-1:-1:-1;;;20836:18:137;;;20829:51;20897:18;;14980:55:84;20576:345:137;14980:55:84;15041:20;;;:27;;-1:-1:-1;;;;15041:27:84;-1:-1:-1;;;15041:27:84;;;15064:4;15074:14;;:34;;-1:-1:-1;;;;;15074:34:84;-1:-1:-1;;;;;;15074:34:84;;;15119:32;;15140:10;;15119:32;;15041:27;;15119:32;14918:238;14878:278::o;10837:282::-;10930:7;11093:13;;1671:5;11068:38;;;;:::i;:::-;:45;;11109:4;11068:45;:::i;:::-;10985:6;;;;;;;;;-1:-1:-1;;;;;10985:6:84;-1:-1:-1;;;;;10985:24:84;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10985:38:84;;11041:16;;11024:14;:33;;;;:::i;:::-;10985:73;;;;;;;;;;;;;4308:25:137;;4296:2;4281:18;;4162:177;10985:73:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10978:4;;10952:23;10961:14;10952:6;:23;:::i;:::-;:30;;;;:::i;:::-;:106;;;;:::i;:::-;:162;;;;:::i;:::-;10945:169;10837:282;-1:-1:-1;;;10837:282:84:o;4759:191:21:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:21;;;;;:24;;;;4759:191::o;5133:444:84:-;2316:19:24;:17;:19::i;:::-;5204:23:84::1;5229:18:::0;5251:19:::1;5263:6;;5251:11;:19::i;:::-;5203:67;;;;5276:25;5293:7;5276:16;:25::i;:::-;5325:10;5315:21;::::0;;;:9:::1;:21;::::0;;;;:54:::1;::::0;:35:::1;;5358:10:::0;5315:42:::1;:54::i;:::-;5307:100;;;::::0;-1:-1:-1;;;5307:100:84;;21858:2:137;5307:100:84::1;::::0;::::1;21840:21:137::0;21897:2;21877:18;;;21870:30;21936:34;21916:18;;;21909:62;-1:-1:-1;;;21987:18:137;;;21980:31;22028:19;;5307:100:84::1;21656:397:137::0;5307:100:84::1;5413:33;:14;5435:10:::0;5413:21:::1;:33::i;:::-;-1:-1:-1::0;5476:18:84::1;::::0;;::::1;::::0;-1:-1:-1;;;;;5476:18:84::1;5459:36;::::0;;;:16:::1;:36;::::0;;;;;;;5452:43;;;5508:20;;;:8:::1;:20:::0;;;;;;5501:27;;-1:-1:-1;;;;;;5501:27:84;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;::::1;5459:36:::0;5501:27:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;;;5553:10;-1:-1:-1::0;;;;;5540:32:84::1;;5565:6;;5540:32;;;;;;;:::i;15690:327::-:0;-1:-1:-1;;;;;15799:19:84;;15776:20;15799:19;;;:9;:19;;;;;15754:14;;15776:20;15799:42;;:33;;:40;:42::i;:::-;15776:65;;15847:22;15884:3;:10;-1:-1:-1;;;;;15872:23:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15847:48;;15906:9;15901:92;15925:3;:10;15921:1;:14;15901:92;;;15963:8;:16;15972:3;15976:1;15972:6;;;;;;;;:::i;:::-;;;;;;;15963:16;;;;;;;;;;;:23;;15950:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;15958:1;15950:10;;;;;;;;:::i;:::-;;;;;;:36;;;;15937:3;;;;;:::i;:::-;;;;15901:92;;;-1:-1:-1;16005:7:84;15690:327;-1:-1:-1;;;15690:327:84:o;8033:532::-;2316:19:24;:17;:19::i;:::-;8099:10:84::1;8089:21;::::0;;;:9:::1;:21;::::0;;;;:35;;;8128:12:::1;-1:-1:-1::0;;;8089:35:84;;::::1;-1:-1:-1::0;;;;;8089:35:84::1;:51;;8081:79;;;::::0;-1:-1:-1;;;8081:79:84;;22509:2:137;8081:79:84::1;::::0;::::1;22491:21:137::0;22548:2;22528:18;;;22521:30;-1:-1:-1;;;22567:18:137;;;22560:45;22622:18;;8081:79:84::1;22307:339:137::0;8081:79:84::1;8193:10;8166:14;8183:21:::0;;;:9:::1;:21;::::0;;;;:27:::1;;:34:::0;8231:10;8223:41:::1;;;::::0;-1:-1:-1;;;8223:41:84;;22853:2:137;8223:41:84::1;::::0;::::1;22835:21:137::0;22892:2;22872:18;;;22865:30;-1:-1:-1;;;22911:18:137;;;22904:48;22969:18;;8223:41:84::1;22651:342:137::0;8223:41:84::1;8307:10;8270:24;8297:21:::0;;;:9:::1;:21;::::0;;;;:44:::1;::::0;:35:::1;;:42;:44::i;:::-;8270:71;;8352:9;8347:93;8371:7;:14;8367:1;:18;8347:93;;;8400:33;8422:7;8430:1;8422:10;;;;;;;;:::i;:::-;;;;;;;8400:14;:21;;:33;;;;:::i;:::-;-1:-1:-1::0;8387:3:84;::::1;::::0;::::1;:::i;:::-;;;;8347:93;;;-1:-1:-1::0;8462:10:84::1;8452:21;::::0;;;:9:::1;:21;::::0;;;;;;;:27:::1;::::0;::::1;8445:34:::0;;;;;;;;;;;;;;-1:-1:-1;;;;;;8445:34:84;;;;;;;;;;8486:5;;:34;;-1:-1:-1;;;8486:34:84;;;;::::1;23172:51:137::0;;;;23239:18;;;23232:34;;;-1:-1:-1;;;;;8486:5:84::1;::::0;:14:::1;::::0;23145:18:137;;8486:34:84::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8532:28:84::1;::::0;4308:25:137;;;8541:10:84::1;::::0;8532:28:::1;::::0;4296:2:137;4281:18;8532:28:84::1;;;;;;;8075:490;;8033:532::o:0;5246:136:21:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:21;;966:10:23;6441:34:21;6437:102;;6498:30;;-1:-1:-1;;;6498:30:21;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;14159:204:84:-;2362:4:21;3191:16;2362:4;3191:10;:16::i;:::-;14262::84::1;:39:::0;;;14313:45:::1;::::0;4308:25:137;;;14313:45:84::1;::::0;4296:2:137;4281:18;14313:45:84::1;4162:177:137::0;14367:225:84;2362:4:21;3191:16;2362:4;3191:10;:16::i;:::-;14477:21:84::1;:46:::0;;;14535:52:::1;::::0;4308:25:137;;;14535:52:84::1;::::0;4296:2:137;4281:18;14535:52:84::1;4162:177:137::0;843:77:84;-1:-1:-1;;;;;;;;;;;3191:16:21;3202:4;3191:10;:16::i;:::-;905:10:84::1;:8;:10::i;:::-;843:77:::0;:::o;9210:682::-;9291:7;9307:23;9335:19;9347:6;;9335:11;:19::i;:::-;-1:-1:-1;9393:16:84;;-1:-1:-1;;;;;9393:16:84;9361:19;9383:27;;;:9;:27;;;;;;;;;9361:55;;;;;;;9393:16;9383:33;;9361:55;;;;;;;-1:-1:-1;;;;;9361:55:84;;;;;;;;;;-1:-1:-1;;;9361:55:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9393:16;;-1:-1:-1;9444:12:84;;-1:-1:-1;;9462:58:84;;9512:1;9505:8;;;;;;;9462:58;9525:24;9577:11;9558:6;:16;;;-1:-1:-1;;;;;9558:30:84;;:103;;9607:54;9630:6;:13;;;9645:6;:15;;;-1:-1:-1;;;;;9607:54:84;:22;:54::i;:::-;9558:103;;;9591:6;:13;;;9558:103;9525:136;;9667:19;9697:6;;;;;;;;;-1:-1:-1;;;;;9697:6:84;-1:-1:-1;;;;;9697:24:84;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9697:38:84;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9689:49:84;9667:71;;9767:11;9748:6;:15;;;-1:-1:-1;;;;;9748:30:84;;9744:74;;-1:-1:-1;9795:16:84;-1:-1:-1;9788:23:84;;-1:-1:-1;;;9788:23:84;9744:74;9871:15;;;;-1:-1:-1;;;;;9863:24:84;9830:30;9849:11;9830:16;:30;:::i;:::-;:57;;;;:::i;:::-;9823:64;9210:682;-1:-1:-1;;;;;;;;9210:682:84:o;2662:359::-;8870:21:22;4302:15;;-1:-1:-1;;;4302:15:22;;;;4301:16;;-1:-1:-1;;;;;4348:14:22;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:22;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:22;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:22;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:22;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:22;-1:-1:-1;;;5013:22:22;;;4979:67;2753:48:84::1;:46;:48::i;:::-;2807:5;:14:::0;;-1:-1:-1;;;;;2807:14:84;;::::1;-1:-1:-1::0;;;;;;2807:14:84;;::::1;::::0;::::1;::::0;;;;2827:16;;;;::::1;::::0;;;::::1;;::::0;;2871:17:::1;::::0;;-1:-1:-1;;;2871:17:84;;;;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;2807:14;2871:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2865:23;::::0;:2:::1;:23;:::i;:::-;2849:13;:39:::0;2895:29:::1;::::0;;:17:::1;:29;::::0;;:36;;-1:-1:-1;;2895:36:84::1;2927:4;2895:36;::::0;;2956:10:::1;2937:16;:29:::0;;;2979:5:::1;2972:4;:12:::0;2990:26;;5066:101:22;;;;5100:23;;-1:-1:-1;;;;5100:23:22;;;5142:14;;-1:-1:-1;25881:50:137;;5142:14:22;;25869:2:137;25854:18;5142:14:22;;;;;;;5066:101;4092:1081;;;;;2662:359:84;;:::o;12019:436::-;12085:29;12123:23;12151:19;12163:6;;12151:11;:19::i;:::-;-1:-1:-1;12215:16:84;;-1:-1:-1;;;;;12215:16:84;12176:26;12205:27;;;:9;:27;;;;;12122:48;;-1:-1:-1;12176:26:84;12205:50;;:41;;:48;:50::i;:::-;12176:79;;12290:9;:16;-1:-1:-1;;;;;12278:29:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12261:46;;12318:9;12313:111;12337:9;:16;12333:1;:20;12313:111;;;12388:8;:22;12397:9;12407:1;12397:12;;;;;;;;:::i;:::-;;;;;;;12388:22;;;;;;;;;;;:29;;12368:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;12383:1;12368:17;;;;;;;;:::i;:::-;;;;;;:49;;;;12355:3;;;;;:::i;:::-;;;;12313:111;;;;12429:21;;12019:436;;;;:::o;11803:136::-;11870:13;11898:8;:27;11917:6;;11907:17;;;;;;;:::i;:::-;;;;;;;;11898:27;;;;;;;;;;;:36;;11891:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11803:136;;;;:::o;6896:111::-;6966:36;6972:6;6980:14;6996:5;6966;:36::i;:::-;6896:111;;:::o;3025:93::-;3081:32;3090:6;;3081:32;;;;;;;;;;;;3110:1;3081:8;:32::i;766:73::-;-1:-1:-1;;;;;;;;;;;3191:16:21;3202:4;3191:10;:16::i;:::-;826:8:84::1;:6;:8::i;3990:961::-:0;2316:19:24;:17;:19::i;:::-;4114:17:84;4106:53:::1;;;::::0;-1:-1:-1;;;4106:53:84;;26420:2:137;4106:53:84::1;::::0;::::1;26402:21:137::0;26459:2;26439:18;;;26432:30;26498:25;26478:18;;;26471:53;26541:18;;4106:53:84::1;26218:347:137::0;4106:53:84::1;4165:18;4196:6;;4186:17;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;4258:1:::1;4217:20:::0;;;:8:::1;:20;::::0;;;;;:29;4186:17;;-1:-1:-1;;;;;;4217:29:84::1;:43:::0;4209:81:::1;;;::::0;-1:-1:-1;;;4209:81:84;;26772:2:137;4209:81:84::1;::::0;::::1;26754:21:137::0;26811:2;26791:18;;;26784:30;26850:27;26830:18;;;26823:55;26895:18;;4209:81:84::1;26570:349:137::0;4209:81:84::1;4351:21;::::0;4314:10:::1;4304:21;::::0;;;:9:::1;:21;::::0;;;;:44:::1;::::0;:35:::1;;:42;:44::i;:::-;:68;4296:113;;;::::0;-1:-1:-1;;;4296:113:84;;27126:2:137;4296:113:84::1;::::0;::::1;27108:21:137::0;;;27145:18;;;27138:30;27204:34;27184:18;;;27177:62;27256:18;;4296:113:84::1;26924:356:137::0;4296:113:84::1;4431:10;4421:21;::::0;;;:9:::1;:21;::::0;;;;:42;::::1;;4416:92;;4485:15;::::0;4473:28:::1;::::0;-1:-1:-1;;;;;4485:15:84::1;4473:11;:28::i;:::-;4542:95;;;;;;;;4561:10;-1:-1:-1::0;;;;;4542:95:84::1;;;;;4585:14;-1:-1:-1::0;;;;;4542:95:84::1;;;;;4609:6;;4542:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;4542:95:84;;;-1:-1:-1;;;4542:95:84::1;::::0;;::::1;::::0;;;4513:20;;;:8:::1;:20:::0;;;;;;;;:124;;;;-1:-1:-1;;;;;;4513:124:84;;::::1;-1:-1:-1::0;;;;;4513:124:84;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;4513:124:84;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;4513:124:84::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;4653:10:84::1;4643:21;::::0;;;:9:::1;:21;::::0;;;;:51:::1;::::0;-1:-1:-1;4643:35:84::1;;4683:10:::0;4643:39:::1;:51::i;:::-;-1:-1:-1::0;4714:10:84::1;4741:1;4704:21:::0;;;:9:::1;:21;::::0;;;;:27:::1;;:34:::0;:38;4700:89:::1;;4752:30;:14;4771:10:::0;4752:18:::1;:30::i;:::-;;4700:89;4823:10;4811;-1:-1:-1::0;;;;;4800:42:84::1;;4835:6;;4800:42;;;;;;;:::i;:::-;;;;;;;;4869:10;-1:-1:-1::0;;;;;4853:45:84::1;;4881:6;;4889:8;4853:45;;;;;;;;:::i;:::-;;;;;;;;4905:41;4923:6;;4931:14;4905:17;:41::i;:::-;4100:851;3990:961:::0;;;;:::o;3732:207:21:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:21;;;;;;;;-1:-1:-1;;;;;3901:31:21;;;;;;;;;;;;;;;3732:207::o;3122:125:84:-;3204:38;3213:6;;3221:8;;3204:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3204:38:84;-1:-1:-1;3204:8:84;;-1:-1:-1;;3204:38:84:i;8929:188::-;9000:7;9016:23;9044:19;9056:6;;9044:11;:19::i;:::-;-1:-1:-1;9086:16:84;-1:-1:-1;;;;;9086:16:84;;;9076:27;;;;:9;:27;;;;;:36;9086:16;9076:36;;;;8929:188;-1:-1:-1;;;;8929:188:84:o;3342:373::-;3471:32;;;3463:60;;;;-1:-1:-1;;;3463:60:84;;;;;;;:::i;:::-;3537:38;;;3529:66;;;;-1:-1:-1;;;3529:66:84;;;;;;;:::i;:::-;3606:9;3601:110;3621:17;;;3601:110;;;3653:51;3662:6;;3669:1;3662:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3673:8;;3682:1;3673:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3653:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3686:14:84;;-1:-1:-1;3686:14:84;;-1:-1:-1;3701:1:84;;-1:-1:-1;3686:17:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;3653:51::-;3640:3;;;;:::i;:::-;;;;3601:110;;10090:647;2316:19:24;:17;:19::i;:::-;10215:30:84;;::::1;10207:58;;;;-1:-1:-1::0;;;10207:58:84::1;;;;;;;:::i;:::-;10323:10;10271:23;10306:28:::0;;;:16:::1;:28;::::0;;;;;;;;10297:38;;:8:::1;:38:::0;;;;;10395:6:::1;::::0;:27;;-1:-1:-1;;;10395:27:84;;;;10297:38;;10271:23;;;-1:-1:-1;;;;;10395:6:84;;::::1;::::0;:25:::1;::::0;:27;;::::1;::::0;10306:28;10395:27;;;;;;;:6;:27:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10395:40:84::1;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10373:64;;10448:9;10443:154;10463:20:::0;;::::1;10443:154;;;10521:11;10506:9;;10516:1;10506:12;;;;;;;:::i;:::-;;;;;;;:26;10498:60;;;::::0;-1:-1:-1;;;10498:60:84;;32292:2:137;10498:60:84::1;::::0;::::1;32274:21:137::0;32331:2;32311:18;;;32304:30;-1:-1:-1;;;32350:18:137;;;32343:51;32411:18;;10498:60:84::1;32090:345:137::0;10498:60:84::1;10584:3;;10588:1;10584:6;;;;;;;:::i;:::-;;;;;;;10566:24;;;;;:::i;:::-;::::0;-1:-1:-1;10485:3:84;::::1;::::0;::::1;:::i;:::-;;;;10443:154;;;;10628:5;10610:14;:23;;10602:62;;;::::0;-1:-1:-1;;;10602:62:84;;32642:2:137;10602:62:84::1;::::0;::::1;32624:21:137::0;32681:2;32661:18;;;32654:30;32720:28;32700:18;;;32693:56;32766:18;;10602:62:84::1;32440:350:137::0;10602:62:84::1;10689:10;-1:-1:-1::0;;;;;10676:56:84::1;;10701:7;:14;;10717:9;;10728:3;;10676:56;;;;;;;;;;:::i;:::-;;;;;;;;10201:536;;;10090:647:::0;;;;:::o;8653:272::-;-1:-1:-1;;;;;8713:27:84;;;;;;:17;:27;;;;;;;;8705:60;;;;-1:-1:-1;;;8705:60:84;;34718:2:137;8705:60:84;;;34700:21:137;34757:2;34737:18;;;34730:30;-1:-1:-1;;;34776:18:137;;;34769:50;34836:18;;8705:60:84;34516:344:137;8705:60:84;8781:10;8771:21;;;;:9;:21;;;;;;;:41;;-1:-1:-1;;;;;;;8771:41:84;;;;8818:49;-1:-1:-1;;;;;;8818:49:84;;;;8771:30;8818:49;;;8879:41;;;;;8804:8;;-1:-1:-1;;;;;9104:32:137;;;;9086:51;;9074:2;9059:18;;8940:203;8879:41:84;;;;;;;;8653:272;:::o;16021:180::-;16151:10;16163:16;16181:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16181:17:84;16021:180;;;;;;;;;:::o;5662:138:21:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;16205:107:84:-:0;16262:7;16284:23;:14;:21;:23::i;:::-;16277:30;;16205:107;:::o;12828:588::-;12912:23;12937:18;12959:19;12971:6;;12959:11;:19::i;:::-;12911:67;;;;12984:25;13001:7;12984:16;:25::i;:::-;13020:18;;;;-1:-1:-1;;;;;13020:18:84;:32;13016:96;;13086:18;;;;-1:-1:-1;;;;;13086:18:84;13069:36;;;;:16;:36;;;;;13062:43;13016:96;-1:-1:-1;;;;;13122:33:84;;;13118:192;;-1:-1:-1;;;;;13173:28:84;;13213:1;13173:28;;;:16;:28;;;;;;:42;13165:89;;;;-1:-1:-1;;;13165:89:84;;35067:2:137;13165:89:84;;;35049:21:137;35106:2;35086:18;;;35079:30;35145:34;35125:18;;;35118:62;-1:-1:-1;;;35196:18:137;;;35189:32;35238:19;;13165:89:84;34865:398:137;13165:89:84;-1:-1:-1;;;;;13262:28:84;;;;;;:16;:28;;;;;:41;;;13118:192;13315:18;;;:31;;-1:-1:-1;;;;;;13315:31:84;-1:-1:-1;;;;;13315:31:84;;;;;13358:53;;13380:10;;13358:53;;;;13392:6;;;;13315:31;;13358:53;:::i;11672:127::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11767:8:84;:27;11786:6;;11776:17;;;;;;;:::i;:::-;;;;;;;;;;;11767:27;;;;;;;;;;;;;-1:-1:-1;11767:27:84;11760:34;;;;;;;;;-1:-1:-1;;;;;11760:34:84;;;;;;;;;;;;;;;;;;;;;;11767:27;;11760:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11672:127;;;;:::o;5888:1004::-;2316:19:24;:17;:19::i;:::-;6012:10:84::1;6002:21;::::0;;;:9:::1;:21;::::0;;;;:27:::1;;:34:::0;:39;5994:95:::1;;;::::0;-1:-1:-1;;;5994:95:84;;35816:2:137;5994:95:84::1;::::0;::::1;35798:21:137::0;35855:2;35835:18;;;35828:30;35894:34;35874:18;;;35867:62;-1:-1:-1;;;35945:18:137;;;35938:41;35996:19;;5994:95:84::1;35614:407:137::0;5994:95:84::1;6095:25;6123:46;6146:6;6154:14;-1:-1:-1::0;;;;;6123:46:84::1;:22;:46::i;:::-;6095:74;;6175:17;6195:6;;;;;;;;;-1:-1:-1::0;;;;;6195:6:84::1;-1:-1:-1::0;;;;;6195:24:84::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6195:36:84::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6175:58;;6239:15;6257:17;:66;;6297:26;6309:14:::0;6297:9;:26:::1;:::i;:::-;6257:66;;;-1:-1:-1::0;;;;;6257:66:84::1;6359:71;::::0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;6359:71:84;;::::1;;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;;;;;-1:-1:-1;6359:71:84;;;;;;6339:10:::1;6329:21:::0;;:9:::1;:21:::0;;;;;;;:101;;:27:::1;::::0;::::1;:101:::0;;;;;;;::::1;-1:-1:-1::0;;;6329:101:84;;::::1;::::0;::::1;;::::0;;;;;;;;;;;;;;;;::::1;-1:-1:-1::0;;;;;;6329:101:84;;;;;::::1;;;;::::0;;;;;;;;;6359:71;;-1:-1:-1;;6463:44:84::1;::::0;:35:::1;;:42;:44::i;:::-;6436:71;;6518:9;6513:90;6537:7;:14;6533:1;:18;6513:90;;;6566:30;6585:7;6593:1;6585:10;;;;;;;;:::i;:::-;;;;;;;6566:14;:18;;:30;;;;:::i;:::-;-1:-1:-1::0;6553:3:84;::::1;::::0;::::1;:::i;:::-;;;;6513:90;;;-1:-1:-1::0;6608:5:84::1;::::0;:53:::1;::::0;-1:-1:-1;;;6608:53:84;;6627:10:::1;6608:53;::::0;::::1;36468:34:137::0;6647:4:84::1;36518:18:137::0;;;36511:43;36570:18;;;36563:34;;;-1:-1:-1;;;;;6608:5:84;;::::1;::::0;:18:::1;::::0;36403::137;;6608:53:84::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6673:65:84::1;::::0;;36839:25:137;;;-1:-1:-1;;;;;36953:15:137;;;36948:2;36933:18;;36926:43;37005:15;;36985:18;;;36978:43;37052:2;37037:18;;37030:34;;;6673:65:84;;6680:10:::1;::::0;6673:65:::1;::::0;;;;;36826:3:137;6673:65:84;;::::1;6749:17;6745:143;;;6781:32;::::0;6802:10:::1;::::0;6781:32:::1;::::0;;;::::1;6745:143;;;6839:42;::::0;-1:-1:-1;;;;;37239:47:137;;37221:66;;6861:10:84::1;::::0;6839:42:::1;::::0;37209:2:137;37194:18;6839:42:84::1;37075:218:137::0;15283:403:84;15363:10;15330:20;15353:21;;;:9;:21;;;;;;;;15394:20;;;;15353:27;;;;;-1:-1:-1;;;15394:20:84;;;;15386:55;;;;-1:-1:-1;;;15386:55:84;;37500:2:137;15386:55:84;;;37482:21:137;37539:2;37519:18;;;37512:30;-1:-1:-1;;;37558:18:137;;;37551:52;37620:18;;15386:55:84;37298:346:137;15386:55:84;15447:20;;;:28;;-1:-1:-1;;;;15447:28:84;;;;;;15562:16;;;-1:-1:-1;;;;;15605:15:84;;;;;;15524:55;;15547:12;;15562:16;15524:14;:55::i;:::-;:73;;;;:::i;:::-;:77;;15600:1;15524:77;:::i;:::-;15523:97;;;;:::i;:::-;15498:16;;;;:122;;;-1:-1:-1;;;;;15498:16:84;:122;:::i;:::-;15481:14;;;:139;;-1:-1:-1;;;;;15481:139:84;;;-1:-1:-1;;;15481:139:84;;;;;;;;;;15632:49;;15666:14;;;;;37221:66:137;;15654:10:84;;15632:49;;37209:2:137;37194:18;15632:49:84;37075:218:137;7057:835:84;2316:19:24;:17;:19::i;:::-;7151:10:84::1;7118:20;7141:21:::0;;;:9:::1;:21;::::0;;;;:27:::1;;7182:13:::0;;7174:70:::1;;;::::0;-1:-1:-1;;;7174:70:84;;38351:2:137;7174:70:84::1;::::0;::::1;38333:21:137::0;38390:2;38370:18;;;38363:30;38429:34;38409:18;;;38402:62;-1:-1:-1;;;38480:18:137;;;38473:38;38528:19;;7174:70:84::1;38149:404:137::0;7174:70:84::1;7258:16;::::0;::::1;::::0;7278:12:::1;-1:-1:-1::0;;;;;7258:16:84;;::::1;:32;;7250:65;;;::::0;-1:-1:-1;;;7250:65:84;;38760:2:137;7250:65:84::1;::::0;::::1;38742:21:137::0;38799:2;38779:18;;;38772:30;-1:-1:-1;;;38818:18:137;;;38811:50;38878:18;;7250:65:84::1;38558:344:137::0;7250:65:84::1;7388:15;::::0;::::1;::::0;7321:33:::1;::::0;7357:47:::1;::::0;7380:6;;-1:-1:-1;;;;;7388:15:84::1;7357:22;:47::i;:::-;7464:13:::0;;7479:15:::1;::::0;::::1;::::0;7321:83;;-1:-1:-1;7410:28:84::1;::::0;7441:54:::1;::::0;7464:13;-1:-1:-1;;;;;7479:15:84::1;7441:22;:54::i;:::-;7410:85;;7520:6;;;;;;;;;-1:-1:-1::0;;;;;7520:6:84::1;-1:-1:-1::0;;;;;7520:24:84::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7520:36:84::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7501:16;::::0;::::1;:57:::0;;-1:-1:-1;;;;;;7501:57:84::1;-1:-1:-1::0;;;;;7501:57:84;;;::::1;::::0;;;::::1;::::0;;7581:20:::1;::::0;::::1;::::0;-1:-1:-1;;;7581:20:84;::::1;;;:77;;7643:15;::::0;::::1;::::0;;7624:16;::::1;::::0;:34:::1;::::0;-1:-1:-1;;;;;7643:15:84;;::::1;::::0;7624:16:::1;:34;:::i;:::-;7581:77;;;-1:-1:-1::0;;;;;7581:77:84::1;7564:14;::::0;::::1;:94:::0;;-1:-1:-1;;;;;7564:94:84;;::::1;-1:-1:-1::0;;;7564:94:84::1;::::0;::::1;::::0;;;::::1;::::0;;7664:13:::1;::::0;::::1;:36:::0;;;7706:23;;7723:6;;7564;;-1:-1:-1;;7706:23:84::1;::::0;7723:6;;7706:23:::1;:::i;:::-;::::0;;;-1:-1:-1;;7735:5:84::1;::::0;:53:::1;::::0;-1:-1:-1;;;7735:53:84;;7754:10:::1;7735:53;::::0;::::1;36468:34:137::0;7774:4:84::1;36518:18:137::0;;;36511:43;36570:18;;;36563:34;;;-1:-1:-1;;;;;7735:5:84;;::::1;::::0;:18:::1;::::0;36403::137;;7735:53:84::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7827:16:84::1;::::0;::::1;::::0;7800:87:::1;::::0;;36839:25:137;;;-1:-1:-1;;;;;7827:16:84;;::::1;36948:2:137::0;36933:18;;36926:43;-1:-1:-1;;;7845:14:84;;::::1;::::0;;::::1;36985:18:137::0;;;36978:43;37052:2;37037:18;;37030:34;;;7807:10:84::1;::::0;7800:87:::1;::::0;36826:3:137;36811:19;7800:87:84::1;36608:462:137::0;4955:144:84;5020:9;5015:80;5035:17;;;5015:80;;;5067:21;5078:6;;5085:1;5078:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;5067:21::-;5054:3;;;;:::i;:::-;;;;5015:80;;4148:103:21;4214:30;4225:4;966:10:23;4214::21;:30::i;7776:300:51:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;16892:260:84:-;16959:23;16984:18;17033:6;;17023:17;;;;;;;:::i;:::-;;;;;;;;;;;17056:20;;;;:8;:20;;;;;;17090:16;;17056:20;;-1:-1:-1;17023:17:84;;-1:-1:-1;;;;;;17090:16:84;17082:65;;;;-1:-1:-1;;;17082:65:84;;39109:2:137;17082:65:84;;;39091:21:137;39148:2;39128:18;;;39121:30;-1:-1:-1;;;39167:18:137;;;39160:52;39229:18;;17082:65:84;38907:346:137;17082:65:84;16892:260;;;;;:::o;17156:157::-;17236:17;;-1:-1:-1;;;;;17236:17:84;17257:10;17236:31;17228:80;;;;-1:-1:-1;;;17228:80:84;;39460:2:137;17228:80:84;;;39442:21:137;39499:2;39479:18;;;39472:30;39538:34;39518:18;;;39511:62;-1:-1:-1;;;39589:18:137;;;39582:34;39633:19;;17228:80:84;39258:400:137;2905:128:24;-1:-1:-1;;;;;;;;;;;2821:9:24;;;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:24;;;;;;;;;;;2966:61;2905:128::o;6221:129:51:-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;7270:387:21:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:21;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:21;;;;;;;;;:38;;-1:-1:-1;;7475:38:21;7509:4;7475:38;;;7559:12;966:10:23;;887:96;7559:12:21;-1:-1:-1;;;;;7532:40:21;7550:7;-1:-1:-1;;;;;7532:40:21;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7432:219;7353:304;7270:387;;;;:::o;7892:388::-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:21;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:21;;;;;;;;;;:39;;-1:-1:-1;;8097:39:21;;;8155:40;966:10:23;;8097:14:21;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;3674:178:24;2563:16;:14;:16::i;:::-;-1:-1:-1;;;;;;;;;;;3791:17:24;;-1:-1:-1;;3791:17:24::1;::::0;;3823:22:::1;966:10:23::0;3832:12:24::1;3823:22;::::0;-1:-1:-1;;;;;9104:32:137;;;9086:51;;9074:2;9059:18;3823:22:24::1;;;;;;;3722:130;3674:178::o:0;620:142:84:-;6931:20:22;:18;:20::i;:::-;674:42:84::1;2362:4:21;705:10:84;674;:42::i;:::-;;722:35;-1:-1:-1::0;;;;;;;;;;;746:10:84::1;722;:35::i;3366:176:24:-:0;2316:19;:17;:19::i;:::-;-1:-1:-1;;;;;;;;;;;3484:16:24;;-1:-1:-1;;3484:16:24::1;3496:4;3484:16;::::0;;3515:20:::1;966:10:23::0;3522:12:24::1;887:96:23::0;6650:115:51;6713:7;6739:19;6747:3;4556:18;;4474:107;5930:123;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;14596:141:84:-;14665:7;14689:1;-1:-1:-1;;;;;14684:6:84;:1;-1:-1:-1;;;;;14684:6:84;;14680:35;;-1:-1:-1;14707:1:84;14700:8;;14680:35;14727:5;14731:1;14727;:5;:::i;4381:197:21:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:21;;-1:-1:-1;;;;;23190:32:137;;4514:47:21;;;23172:51:137;23239:18;;;23232:34;;;23145:18;;4514:47:21;22998:274:137;5581:109:51;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;2815:1368::-;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:51;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;3105:126:24;-1:-1:-1;;;;;;;;;;;2821:9:24;;;3163:62;;3199:15;;-1:-1:-1;;;3199:15:24;;;;;;;;;;;7084:141:22;8870:21;8560:40;-1:-1:-1;;;8560:40:22;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:22;;;;;;;;;;;2241:406:51;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:51;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:51;2618:12;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:137:-;-1:-1:-1;;;;;89:31:137;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:118::-;375:5;368:13;361:21;354:5;351:32;341:60;;397:1;394;387:12;412:517;483:6;491;499;552:2;540:9;531:7;527:23;523:32;520:52;;;568:1;565;558:12;520:52;607:9;594:23;626:31;651:5;626:31;:::i;:::-;676:5;-1:-1:-1;733:2:137;718:18;;705:32;746:30;705:32;746:30;:::i;:::-;795:7;-1:-1:-1;854:2:137;839:18;;826:32;867:30;826:32;867:30;:::i;:::-;916:7;906:17;;;412:517;;;;;:::o;934:248::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;-1:-1:-1;;1102:23:137;;;1172:2;1157:18;;;1144:32;;-1:-1:-1;934:248:137:o;1187:422::-;1228:3;1266:5;1260:12;1293:6;1288:3;1281:19;1318:1;1328:162;1342:6;1339:1;1336:13;1328:162;;;1404:4;1460:13;;;1456:22;;1450:29;1432:11;;;1428:20;;1421:59;1357:12;1328:162;;;1332:3;1535:1;1528:4;1519:6;1514:3;1510:16;1506:27;1499:38;1598:4;1591:2;1587:7;1582:2;1574:6;1570:15;1566:29;1561:3;1557:39;1553:50;1546:57;;;1187:422;;;;:::o;1614:800::-;1774:4;1803:2;1843;1832:9;1828:18;1873:2;1862:9;1855:21;1896:6;1931;1925:13;1962:6;1954;1947:22;2000:2;1989:9;1985:18;1978:25;;2062:2;2052:6;2049:1;2045:14;2034:9;2030:30;2026:39;2012:53;;2100:2;2092:6;2088:15;2121:1;2131:254;2145:6;2142:1;2139:13;2131:254;;;2238:2;2234:7;2222:9;2214:6;2210:22;2206:36;2201:3;2194:49;2266:39;2298:6;2289;2283:13;2266:39;:::i;:::-;2256:49;-1:-1:-1;2363:12:137;;;;2328:15;;;;2167:1;2160:9;2131:254;;;-1:-1:-1;2402:6:137;;1614:800;-1:-1:-1;;;;;;;1614:800:137:o;2419:286::-;2477:6;2530:2;2518:9;2509:7;2505:23;2501:32;2498:52;;;2546:1;2543;2536:12;2498:52;2572:23;;-1:-1:-1;;;;;;2624:32:137;;2614:43;;2604:71;;2671:1;2668;2661:12;2902:180;2961:6;3014:2;3002:9;2993:7;2989:23;2985:32;2982:52;;;3030:1;3027;3020:12;2982:52;-1:-1:-1;3053:23:137;;2902:180;-1:-1:-1;2902:180:137:o;3087:347::-;3138:8;3148:6;3202:3;3195:4;3187:6;3183:17;3179:27;3169:55;;3220:1;3217;3210:12;3169:55;-1:-1:-1;3243:20:137;;-1:-1:-1;;;;;3275:30:137;;3272:50;;;3318:1;3315;3308:12;3272:50;3355:4;3347:6;3343:17;3331:29;;3407:3;3400:4;3391:6;3383;3379:19;3375:30;3372:39;3369:59;;;3424:1;3421;3414:12;3439:718;3530:6;3538;3546;3554;3607:2;3595:9;3586:7;3582:23;3578:32;3575:52;;;3623:1;3620;3613:12;3575:52;3663:9;3650:23;-1:-1:-1;;;;;3733:2:137;3725:6;3722:14;3719:34;;;3749:1;3746;3739:12;3719:34;3788:58;3838:7;3829:6;3818:9;3814:22;3788:58;:::i;:::-;3865:8;;-1:-1:-1;3762:84:137;-1:-1:-1;3953:2:137;3938:18;;3925:32;;-1:-1:-1;3969:16:137;;;3966:36;;;3998:1;3995;3988:12;3966:36;;4037:60;4089:7;4078:8;4067:9;4063:24;4037:60;:::i;:::-;3439:718;;;;-1:-1:-1;4116:8:137;-1:-1:-1;;;;3439:718:137:o;4711:409::-;4781:6;4789;4842:2;4830:9;4821:7;4817:23;4813:32;4810:52;;;4858:1;4855;4848:12;4810:52;4898:9;4885:23;-1:-1:-1;;;;;4923:6:137;4920:30;4917:50;;;4963:1;4960;4953:12;4917:50;5002:58;5052:7;5043:6;5032:9;5028:22;5002:58;:::i;:::-;5079:8;;4976:84;;-1:-1:-1;4711:409:137;-1:-1:-1;;;;4711:409:137:o;5125:247::-;5184:6;5237:2;5225:9;5216:7;5212:23;5208:32;5205:52;;;5253:1;5250;5243:12;5205:52;5292:9;5279:23;5311:31;5336:5;5311:31;:::i;5377:315::-;5445:6;5453;5506:2;5494:9;5485:7;5481:23;5477:32;5474:52;;;5522:1;5519;5512:12;5474:52;5558:9;5545:23;5535:33;;5618:2;5607:9;5603:18;5590:32;5631:31;5656:5;5631:31;:::i;:::-;5681:5;5671:15;;;5377:315;;;;;:::o;5697:433::-;5810:6;5818;5871:2;5859:9;5850:7;5846:23;5842:32;5839:52;;;5887:1;5884;5877:12;5839:52;5926:9;5913:23;5945:31;5970:5;5945:31;:::i;:::-;5995:5;-1:-1:-1;6052:2:137;6037:18;;6024:32;6065:33;6024:32;6065:33;:::i;6135:219::-;6284:2;6273:9;6266:21;6247:4;6304:44;6344:2;6333:9;6329:18;6321:6;6304:44;:::i;7049:146::-;-1:-1:-1;;;;;7128:5:137;7124:46;7117:5;7114:57;7104:85;;7185:1;7182;7175:12;7200:315;7268:6;7276;7329:2;7317:9;7308:7;7304:23;7300:32;7297:52;;;7345:1;7342;7335:12;7297:52;7381:9;7368:23;7358:33;;7441:2;7430:9;7426:18;7413:32;7454:31;7479:5;7454:31;:::i;7520:127::-;7581:10;7576:3;7572:20;7569:1;7562:31;7612:4;7609:1;7602:15;7636:4;7633:1;7626:15;7652:1283;7750:6;7758;7766;7774;7827:2;7815:9;7806:7;7802:23;7798:32;7795:52;;;7843:1;7840;7833:12;7795:52;7883:9;7870:23;-1:-1:-1;;;;;7953:2:137;7945:6;7942:14;7939:34;;;7969:1;7966;7959:12;7939:34;8008:58;8058:7;8049:6;8038:9;8034:22;8008:58;:::i;:::-;8085:8;;-1:-1:-1;7982:84:137;-1:-1:-1;8173:2:137;8158:18;;8145:32;;-1:-1:-1;8189:16:137;;;8186:36;;;8218:1;8215;8208:12;8186:36;8256:8;8245:9;8241:24;8231:34;;8303:7;8296:4;8292:2;8288:13;8284:27;8274:55;;8325:1;8322;8315:12;8274:55;8361:2;8348:16;8383:2;8379;8376:10;8373:36;;;8389:18;;:::i;:::-;8464:2;8458:9;8432:2;8518:13;;-1:-1:-1;;8514:22:137;;;8538:2;8510:31;8506:40;8494:53;;;8562:18;;;8582:22;;;8559:46;8556:72;;;8608:18;;:::i;:::-;8648:10;8644:2;8637:22;8683:2;8675:6;8668:18;8723:7;8718:2;8713;8709;8705:11;8701:20;8698:33;8695:53;;;8744:1;8741;8734:12;8695:53;8800:2;8795;8791;8787:11;8782:2;8774:6;8770:15;8757:46;8845:1;8840:2;8835;8827:6;8823:15;8819:24;8812:35;8866:6;8856:16;;;;;;;8891:38;8925:2;8914:9;8910:18;8891:38;:::i;:::-;8881:48;;7652:1283;;;;;;;:::o;9148:374::-;9218:8;9228:6;9282:3;9275:4;9267:6;9263:17;9259:27;9249:55;;9300:1;9297;9290:12;9249:55;-1:-1:-1;9323:20:137;;-1:-1:-1;;;;;9355:30:137;;9352:50;;;9398:1;9395;9388:12;9352:50;9435:4;9427:6;9423:17;9411:29;;9495:3;9488:4;9478:6;9475:1;9471:14;9463:6;9459:27;9455:38;9452:47;9449:67;;;9512:1;9509;9502:12;9527:1132;9708:6;9716;9724;9732;9740;9748;9801:2;9789:9;9780:7;9776:23;9772:32;9769:52;;;9817:1;9814;9807:12;9769:52;9857:9;9844:23;-1:-1:-1;;;;;9927:2:137;9919:6;9916:14;9913:34;;;9943:1;9940;9933:12;9913:34;9982:77;10051:7;10042:6;10031:9;10027:22;9982:77;:::i;:::-;10078:8;;-1:-1:-1;9956:103:137;-1:-1:-1;10166:2:137;10151:18;;10138:32;;-1:-1:-1;10182:16:137;;;10179:36;;;10211:1;10208;10201:12;10179:36;10250:79;10321:7;10310:8;10299:9;10295:24;10250:79;:::i;:::-;10348:8;;-1:-1:-1;10224:105:137;-1:-1:-1;10436:2:137;10421:18;;10408:32;;-1:-1:-1;10452:16:137;;;10449:36;;;10481:1;10478;10471:12;10449:36;;10520:79;10591:7;10580:8;10569:9;10565:24;10520:79;:::i;:::-;9527:1132;;;;-1:-1:-1;9527:1132:137;;-1:-1:-1;9527:1132:137;;10618:8;;9527:1132;-1:-1:-1;;;9527:1132:137:o;10664:787::-;10786:6;10794;10802;10810;10863:2;10851:9;10842:7;10838:23;10834:32;10831:52;;;10879:1;10876;10869:12;10831:52;10919:9;10906:23;-1:-1:-1;;;;;10989:2:137;10981:6;10978:14;10975:34;;;11005:1;11002;10995:12;10975:34;11044:77;11113:7;11104:6;11093:9;11089:22;11044:77;:::i;:::-;11140:8;;-1:-1:-1;11018:103:137;-1:-1:-1;11228:2:137;11213:18;;11200:32;;-1:-1:-1;11244:16:137;;;11241:36;;;11273:1;11270;11263:12;11241:36;;11312:79;11383:7;11372:8;11361:9;11357:24;11312:79;:::i;11456:178::-;11569:6;11602:2;11590:15;;11587:24;-1:-1:-1;11584:44:137;;;11624:1;11621;11614:12;11639:1315;11913:6;11921;11929;11937;11945;11998:3;11986:9;11977:7;11973:23;11969:33;11966:53;;;12015:1;12012;12005:12;11966:53;12055:9;12042:23;-1:-1:-1;;;;;12125:2:137;12117:6;12114:14;12111:34;;;12141:1;12138;12131:12;12111:34;12164:85;12241:7;12232:6;12221:9;12217:22;12164:85;:::i;:::-;12154:95;;12302:2;12291:9;12287:18;12274:32;12258:48;;12331:2;12321:8;12318:16;12315:36;;;12347:1;12344;12337:12;12315:36;12370:87;12449:7;12438:8;12427:9;12423:24;12370:87;:::i;:::-;12360:97;;12510:2;12499:9;12495:18;12482:32;12466:48;;12539:2;12529:8;12526:16;12523:36;;;12555:1;12552;12545:12;12523:36;12594:79;12665:7;12654:8;12643:9;12639:24;12594:79;:::i;:::-;12692:8;;-1:-1:-1;12568:105:137;-1:-1:-1;12780:2:137;12765:18;;12752:32;;-1:-1:-1;12796:16:137;;;12793:36;;;12825:1;12822;12815:12;12793:36;-1:-1:-1;12848:24:137;;12906:3;12888:16;;;12884:26;12881:46;;;12923:1;12920;12913:12;12881:46;12946:2;12936:12;;;11639:1315;;;;;;;;:::o;12959:522::-;13009:3;13054:1;13050;13045:3;13041:11;13037:19;13095:2;13087:5;13081:12;13077:21;13072:3;13065:34;13160:2;13152:4;13145:5;13141:16;13135:23;13131:32;13124:4;13119:3;13115:14;13108:56;;13210:4;13203:5;13199:16;13193:23;13248:4;13241;13236:3;13232:14;13225:28;13274:46;13314:4;13309:3;13305:14;13291:12;13274:46;:::i;:::-;13262:58;;13368:4;13361:5;13357:16;13351:23;13416:3;13410:4;13406:14;13399:4;13394:3;13390:14;13383:38;13437;13470:4;13454:14;13437:38;:::i;:::-;13430:45;12959:522;-1:-1:-1;;;;;12959:522:137:o;13486:493::-;13743:6;13732:9;13725:25;13786:2;13781;13770:9;13766:18;13759:30;13706:4;13812:44;13852:2;13841:9;13837:18;13829:6;13812:44;:::i;:::-;13904:9;13896:6;13892:22;13887:2;13876:9;13872:18;13865:50;13932:41;13966:6;13958;13932:41;:::i;:::-;13924:49;13486:493;-1:-1:-1;;;;;;13486:493:137:o;13984:544::-;14063:6;14071;14079;14132:2;14120:9;14111:7;14107:23;14103:32;14100:52;;;14148:1;14145;14138:12;14100:52;14188:9;14175:23;-1:-1:-1;;;;;14213:6:137;14210:30;14207:50;;;14253:1;14250;14243:12;14207:50;14292:58;14342:7;14333:6;14322:9;14318:22;14292:58;:::i;:::-;14369:8;;-1:-1:-1;14266:84:137;-1:-1:-1;;14454:2:137;14439:18;;14426:32;14467:31;14426:32;14467:31;:::i;14533:260::-;14714:2;14703:9;14696:21;14677:4;14734:53;14783:2;14772:9;14768:18;14760:6;14734:53;:::i;14798:450::-;14872:6;14880;14888;14941:2;14929:9;14920:7;14916:23;14912:32;14909:52;;;14957:1;14954;14947:12;14909:52;14993:9;14980:23;14970:33;;15053:2;15042:9;15038:18;15025:32;15066:31;15091:5;15066:31;:::i;15253:455::-;15350:6;15358;15411:2;15399:9;15390:7;15386:23;15382:32;15379:52;;;15427:1;15424;15417:12;15379:52;15467:9;15454:23;-1:-1:-1;;;;;15492:6:137;15489:30;15486:50;;;15532:1;15529;15522:12;15486:50;15571:77;15640:7;15631:6;15620:9;15616:22;15571:77;:::i;16584:127::-;16645:10;16640:3;16636:20;16633:1;16626:31;16676:4;16673:1;16666:15;16700:4;16697:1;16690:15;16716:168;16789:9;;;16820;;16837:15;;;16831:22;;16817:37;16807:71;;16858:18;;:::i;16889:125::-;16954:9;;;16975:10;;;16972:36;;;16988:18;;:::i;17019:128::-;17086:9;;;17107:11;;;17104:37;;;17121:18;;:::i;17152:127::-;17213:10;17208:3;17204:20;17201:1;17194:31;17244:4;17241:1;17234:15;17268:4;17265:1;17258:15;17284:380;17363:1;17359:12;;;;17406;;;17427:61;;17481:4;17473:6;17469:17;17459:27;;17427:61;17534:2;17526:6;17523:14;17503:18;17500:38;17497:161;;17580:10;17575:3;17571:20;17568:1;17561:31;17615:4;17612:1;17605:15;17643:4;17640:1;17633:15;17497:161;;17284:380;;;:::o;17669:135::-;17708:3;17729:17;;;17726:43;;17749:18;;:::i;:::-;-1:-1:-1;17796:1:137;17785:13;;17669:135::o;17935:545::-;18037:2;18032:3;18029:11;18026:448;;;18073:1;18098:5;18094:2;18087:17;18143:4;18139:2;18129:19;18213:2;18201:10;18197:19;18194:1;18190:27;18184:4;18180:38;18249:4;18237:10;18234:20;18231:47;;;-1:-1:-1;18272:4:137;18231:47;18327:2;18322:3;18318:12;18315:1;18311:20;18305:4;18301:31;18291:41;;18382:82;18400:2;18393:5;18390:13;18382:82;;;18445:17;;;18426:1;18415:13;18382:82;;;18386:3;;;17935:545;;;:::o;18656:1206::-;-1:-1:-1;;;;;18775:3:137;18772:27;18769:53;;;18802:18;;:::i;:::-;18831:94;18921:3;18881:38;18913:4;18907:11;18881:38;:::i;:::-;18875:4;18831:94;:::i;:::-;18951:1;18976:2;18971:3;18968:11;18993:1;18988:616;;;;19648:1;19665:3;19662:93;;;-1:-1:-1;19721:19:137;;;19708:33;19662:93;-1:-1:-1;;18613:1:137;18609:11;;;18605:24;18601:29;18591:40;18637:1;18633:11;;;18588:57;19768:78;;18961:895;;18988:616;17882:1;17875:14;;;17919:4;17906:18;;-1:-1:-1;;19024:17:137;;;19125:9;19147:229;19161:7;19158:1;19155:14;19147:229;;;19250:19;;;19237:33;19222:49;;19357:4;19342:20;;;;19310:1;19298:14;;;;19177:12;19147:229;;;19151:3;19404;19395:7;19392:16;19389:159;;;19528:1;19524:6;19518:3;19512;19509:1;19505:11;19501:21;19497:34;19493:39;19480:9;19475:3;19471:19;19458:33;19454:79;19446:6;19439:95;19389:159;;;19591:1;19585:3;19582:1;19578:11;19574:19;19568:4;19561:33;18961:895;;18656:1206;;;:::o;19867:266::-;19955:6;19950:3;19943:19;20007:6;20000:5;19993:4;19988:3;19984:14;19971:43;-1:-1:-1;20059:1:137;20034:16;;;20052:4;20030:27;;;20023:38;;;;20115:2;20094:15;;;-1:-1:-1;;20090:29:137;20081:39;;;20077:50;;19867:266::o;20138:433::-;20353:2;20342:9;20335:21;20316:4;20379:61;20436:2;20425:9;20421:18;20413:6;20405;20379:61;:::i;:::-;20488:9;20480:6;20476:22;20471:2;20460:9;20456:18;20449:50;20516:49;20558:6;20550;20542;20516:49;:::i;:::-;20508:57;20138:433;-1:-1:-1;;;;;;;20138:433:137:o;20926:279::-;21024:6;21077:2;21065:9;21056:7;21052:23;21048:32;21045:52;;;21093:1;21090;21083:12;21045:52;21125:9;21119:16;21144:31;21169:5;21144:31;:::i;21210:184::-;21280:6;21333:2;21321:9;21312:7;21308:23;21304:32;21301:52;;;21349:1;21346;21339:12;21301:52;-1:-1:-1;21372:16:137;;21210:184;-1:-1:-1;21210:184:137:o;21399:127::-;21460:10;21455:3;21451:20;21448:1;21441:31;21491:4;21488:1;21481:15;21515:4;21512:1;21505:15;21531:120;21571:1;21597;21587:35;;21602:18;;:::i;:::-;-1:-1:-1;21636:9:137;;21531:120::o;22058:244::-;22215:2;22204:9;22197:21;22178:4;22235:61;22292:2;22281:9;22277:18;22269:6;22261;22235:61;:::i;:::-;22227:69;22058:244;-1:-1:-1;;;;22058:244:137:o;23277:245::-;23344:6;23397:2;23385:9;23376:7;23372:23;23368:32;23365:52;;;23413:1;23410;23403:12;23365:52;23445:9;23439:16;23464:28;23486:5;23464:28;:::i;23811:251::-;23881:6;23934:2;23922:9;23913:7;23909:23;23905:32;23902:52;;;23950:1;23947;23940:12;23902:52;23982:9;23976:16;24001:31;24026:5;24001:31;:::i;24067:273::-;24135:6;24188:2;24176:9;24167:7;24163:23;24159:32;24156:52;;;24204:1;24201;24194:12;24156:52;24236:9;24230:16;24286:4;24279:5;24275:16;24268:5;24265:27;24255:55;;24306:1;24303;24296:12;24345:422;24434:1;24477:5;24434:1;24491:270;24512:7;24502:8;24499:21;24491:270;;;24571:4;24567:1;24563:6;24559:17;24553:4;24550:27;24547:53;;;24580:18;;:::i;:::-;24630:7;24620:8;24616:22;24613:55;;;24650:16;;;;24613:55;24729:22;;;;24689:15;;;;24491:270;;;24495:3;24345:422;;;;;:::o;24772:806::-;24821:5;24851:8;24841:80;;-1:-1:-1;24892:1:137;24906:5;;24841:80;24940:4;24930:76;;-1:-1:-1;24977:1:137;24991:5;;24930:76;25022:4;25040:1;25035:59;;;;25108:1;25103:130;;;;25015:218;;25035:59;25065:1;25056:10;;25079:5;;;25103:130;25140:3;25130:8;25127:17;25124:43;;;25147:18;;:::i;:::-;-1:-1:-1;;25203:1:137;25189:16;;25218:5;;25015:218;;25317:2;25307:8;25304:16;25298:3;25292:4;25289:13;25285:36;25279:2;25269:8;25266:16;25261:2;25255:4;25252:12;25248:35;25245:77;25242:159;;;-1:-1:-1;25354:19:137;;;25386:5;;25242:159;25433:34;25458:8;25452:4;25433:34;:::i;:::-;25503:6;25499:1;25495:6;25491:19;25482:7;25479:32;25476:58;;;25514:18;;:::i;:::-;25552:20;;24772:806;-1:-1:-1;;;24772:806:137:o;25583:140::-;25641:5;25670:47;25711:4;25701:8;25697:19;25691:4;25670:47;:::i;25942:271::-;26125:6;26117;26112:3;26099:33;26081:3;26151:16;;26176:13;;;26151:16;25942:271;-1:-1:-1;25942:271:137:o;27285:1350::-;27409:3;27403:10;-1:-1:-1;;;;;27428:6:137;27425:30;27422:56;;;27458:18;;:::i;:::-;27487:97;27577:6;27537:38;27569:4;27563:11;27537:38;:::i;:::-;27531:4;27487:97;:::i;:::-;27639:4;;27703:2;27692:14;;27720:1;27715:663;;;;28422:1;28439:6;28436:89;;;-1:-1:-1;28491:19:137;;;28485:26;28436:89;-1:-1:-1;;18613:1:137;18609:11;;;18605:24;18601:29;18591:40;18637:1;18633:11;;;18588:57;28538:81;;27685:944;;27715:663;17882:1;17875:14;;;17919:4;17906:18;;-1:-1:-1;;27751:20:137;;;27869:236;27883:7;27880:1;27877:14;27869:236;;;27972:19;;;27966:26;27951:42;;28064:27;;;;28032:1;28020:14;;;;27899:19;;27869:236;;;27873:3;28133:6;28124:7;28121:19;28118:201;;;28194:19;;;28188:26;-1:-1:-1;;28277:1:137;28273:14;;;28289:3;28269:24;28265:37;28261:42;28246:58;28231:74;;28118:201;-1:-1:-1;;;;;28365:1:137;28349:14;;;28345:22;28332:36;;-1:-1:-1;27285:1350:137:o;29997:406::-;30202:2;30191:9;30184:21;30165:4;30228:61;30285:2;30274:9;30270:18;30262:6;30254;30228:61;:::i;:::-;30337:9;30329:6;30325:22;30320:2;30309:9;30305:18;30298:50;30365:32;30390:6;30382;30365:32;:::i;30408:339::-;30610:2;30592:21;;;30649:2;30629:18;;;30622:30;-1:-1:-1;;;30683:2:137;30668:18;;30661:45;30738:2;30723:18;;30408:339::o;30752:521::-;30829:4;30835:6;30895:11;30882:25;30989:2;30985:7;30974:8;30958:14;30954:29;30950:43;30930:18;30926:68;30916:96;;31008:1;31005;30998:12;30916:96;31035:33;;31087:20;;;-1:-1:-1;;;;;;31119:30:137;;31116:50;;;31162:1;31159;31152:12;31116:50;31195:4;31183:17;;-1:-1:-1;31226:14:137;31222:27;;;31212:38;;31209:58;;;31263:1;31260;31253:12;32795:311;32883:19;;;32865:3;-1:-1:-1;;;;;32914:31:137;;32911:51;;;32958:1;32955;32948:12;32911:51;32994:6;32991:1;32987:14;33046:8;33039:5;33032:4;33027:3;33023:14;33010:45;33075:18;;;;33095:4;33071:29;;32795:311;-1:-1:-1;;;32795:311:137:o;33111:1400::-;33431:2;33420:9;33413:21;33394:4;33454:1;33487:6;33481:13;33517:36;33543:9;33517:36;:::i;:::-;33589:6;33584:2;33573:9;33569:18;33562:34;33615:3;33637:1;33669:2;33658:9;33654:18;33686:1;33681:158;;;;33853:1;33848:381;;;;33647:582;;33681:158;-1:-1:-1;;33729:24:137;;33709:18;;;33702:52;33807:14;;33800:22;33797:1;33793:30;33778:46;;33774:55;;;-1:-1:-1;33681:158:137;;33848:381;33879:6;33876:1;33869:17;33909:4;33954:2;33951:1;33941:16;33979:1;33993:180;34007:6;34004:1;34001:13;33993:180;;;34100:14;;34076:17;;;34072:26;;34065:50;34143:16;;;;34022:10;;33993:180;;;34197:17;;34193:26;;;-1:-1:-1;;;33647:582:137;;;;;;34276:9;34271:3;34267:19;34260:4;34249:9;34245:20;34238:49;34310:58;34364:3;34356:6;34348;34310:58;:::i;:::-;34296:72;;34416:9;34408:6;34404:22;34399:2;34388:9;34384:18;34377:50;34444:61;34498:6;34490;34482;34444:61;:::i;35268:341::-;35453:2;35442:9;35435:21;35416:4;35473:61;35530:2;35519:9;35515:18;35507:6;35499;35473:61;:::i;:::-;35465:69;;35599:1;35595;35590:3;35586:11;35582:19;35574:6;35570:32;35565:2;35554:9;35550:18;35543:60;35268:341;;;;;;:::o;36026:197::-;-1:-1:-1;;;;;36148:10:137;;;36160;;;36144:27;;36183:11;;;36180:37;;;36197:18;;:::i;37649:216::-;37689:1;-1:-1:-1;;;;;37776:2:137;37773:1;37769:10;37798:3;37788:37;;37805:18;;:::i;:::-;37843:10;;37839:20;;;;;37649:216;-1:-1:-1;;37649:216:137:o;37870:274::-;-1:-1:-1;;;;;38008:10:137;;;38020;;;38004:27;38051:20;;;;37942:34;38090:24;;;38080:58;;38118:18;;:::i;:::-;38080:58;;37870:274;;;;:::o;39663:200::-;-1:-1:-1;;;;;39799:10:137;;;39787;;;39783:27;;39822:12;;;39819:38;;;39837:18;;:::i;40147:127::-;40208:10;40203:3;40199:20;40196:1;40189:31;40239:4;40236:1;40229:15;40263:4;40260:1;40253:15", - "linkReferences": {} - }, - "methodIdentifiers": { - "DEFAULT_ADMIN_ROLE()": "a217fddf", - "PAUSER_ROLE()": "e63ab1e9", - "addStake(uint256)": "eb4f16b5", - "allocateComputationUnits(uint256[],uint256[])": "b785a2e6", - "averageBlockTime()": "233dedf1", - "canUnstake(address)": "85f4498b", - "computationUnitsAmount(uint256,uint256)": "1c0fa1c8", - "computationUnitsAvailable(bytes)": "44d4bea8", - "defaultStrategy()": "fac5bb9b", - "disableAutoExtension()": "e6c7f21b", - "enableAutoExtension()": "13f117f2", - "gatewayByAddress(address)": "429773fb", - "getActiveGateways(uint256,uint256)": "01a99356", - "getActiveGatewaysCount()": "d87113e5", - "getCluster(bytes)": "585a6a6d", - "getGateway(bytes)": "dcefedaf", - "getMetadata(bytes)": "75734be8", - "getMyGateways(address)": "2c17a07f", - "getRoleAdmin(bytes32)": "248a9ca3", - "getStake(address)": "7a766460", - "getUsedStrategy(bytes)": "94f3c725", - "grantRole(bytes32,address)": "2f2ff15d", - "hasRole(bytes32,address)": "91d14854", - "initialize(address,address)": "485cc955", - "isStrategyAllowed(address)": "67c1def9", - "mana()": "bdb001a7", - "maxGatewaysPerCluster()": "bc9c0e62", - "pause()": "8456cb59", - "paused()": "5c975abb", - "register(bytes)": "82fbdc9c", - "register(bytes,string)": "92255fbf", - "register(bytes,string,address)": "876ab349", - "register(bytes[],string[],address[])": "b1a7e279", - "renounceRole(bytes32,address)": "36568abe", - "revokeRole(bytes32,address)": "d547741f", - "router()": "f887ea40", - "setAverageBlockTime(uint256)": "3736d853", - "setGatewayAddress(bytes,address)": "dacfab0d", - "setIsStrategyAllowed(address,bool,bool)": "017a02c3", - "setMana(uint256)": "0def8b8a", - "setMaxGatewaysPerCluster(uint256)": "3abcf38c", - "setMetadata(bytes,string)": "0fe9fb66", - "stake(uint256,uint128)": "7acfc9e2", - "stake(uint256,uint128,bool)": "e3fa31ed", - "staked(address)": "98807d84", - "supportsInterface(bytes4)": "01ffc9a7", - "testAbi(uint256[][3],(address,address,bytes,string)[3],(address,address,bytes,string)[],(address,address,bytes,string))": "bb952d4e", - "token()": "fc0c546a", - "unpause()": "3f4ba83a", - "unregister(bytes)": "27d6c032", - "unregister(bytes[])": "f586857a", - "unstake()": "2def6620", - "useStrategy(address)": "b8050a5d" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gateway\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"workerIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"name\":\"AllocatedCUs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"lockEnd\",\"type\":\"uint128\"}],\"name\":\"AutoextensionDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"}],\"name\":\"AutoextensionEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBlockTime\",\"type\":\"uint256\"}],\"name\":\"AverageBlockTimeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"DefaultStrategyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"GatewayAddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCuPerSQD\",\"type\":\"uint256\"}],\"name\":\"ManaChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAmount\",\"type\":\"uint256\"}],\"name\":\"MaxGatewaysPerClusterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"MetadataChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"lockStart\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"lockEnd\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"computationUnits\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"name\":\"StrategyAllowed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"Unregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gatewayOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"UsedStrategyChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"workerIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"cus\",\"type\":\"uint256[]\"}],\"name\":\"allocateComputationUnits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"averageBlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canUnstake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"durationBlocks\",\"type\":\"uint256\"}],\"name\":\"computationUnitsAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"computationUnitsAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultStrategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableAutoExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableAutoExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"gatewayByAddress\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"gatewayId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pageNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"perPage\",\"type\":\"uint256\"}],\"name\":\"getActiveGateways\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveGatewaysCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"getCluster\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"clusterPeerIds\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"getGateway\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"internalType\":\"struct IGatewayRegistry.Gateway\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"getMetadata\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getMyGateways\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"lockStart\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"lockEnd\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"duration\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"autoExtension\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldCUs\",\"type\":\"uint256\"}],\"internalType\":\"struct IGatewayRegistry.Stake\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"getUsedStrategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20WithMetadata\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"contract IRouter\",\"name\":\"_router\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"isStrategyAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mana\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxGatewaysPerCluster\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"gatewayAddress\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"peerId\",\"type\":\"bytes[]\"},{\"internalType\":\"string[]\",\"name\":\"metadata\",\"type\":\"string[]\"},{\"internalType\":\"address[]\",\"name\":\"gatewayAddress\",\"type\":\"address[]\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contract IRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newAverageBlockTime\",\"type\":\"uint256\"}],\"name\":\"setAverageBlockTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setGatewayAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"name\":\"setIsStrategyAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMana\",\"type\":\"uint256\"}],\"name\":\"setMana\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxGatewaysPerCluster\",\"type\":\"uint256\"}],\"name\":\"setMaxGatewaysPerCluster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"durationBlocks\",\"type\":\"uint128\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"durationBlocks\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"withAutoExtension\",\"type\":\"bool\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"staked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[][3]\",\"name\":\"a\",\"type\":\"uint256[][3]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"internalType\":\"struct IGatewayRegistry.Gateway[3]\",\"name\":\"b\",\"type\":\"tuple[3]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"internalType\":\"struct IGatewayRegistry.Gateway[]\",\"name\":\"c\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"internalType\":\"struct IGatewayRegistry.Gateway\",\"name\":\"d\",\"type\":\"tuple\"}],\"name\":\"testAbi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ra\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"rb\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"internalType\":\"struct IGatewayRegistry.Gateway\",\"name\":\"rc\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20WithMetadata\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"peerId\",\"type\":\"bytes\"}],\"name\":\"unregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"peerId\",\"type\":\"bytes[]\"}],\"name\":\"unregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"useStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract has a list of whitelisted gateways Gateway operators can stake tokens for a period of time to receive computation units (CUs) Allocation units are used by workers to track, if the gateway can perform queries on them Allocation units are distributed between workers either by strategy contract, of if strategy is not set, manually by calling `allocateComputationUnits` function We call a set of gateways created by single wallet a cluster\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"addStake(uint256)\":{\"details\":\"Add more stake to the existing one\"},\"allocateComputationUnits(uint256[],uint256[])\":{\"details\":\"Allocate computation units to workers Allocates i-th amount of cus to the worker with i-ths workerId Sum of all cus should not exceed the amount of available cus\"},\"canUnstake(address)\":{\"returns\":{\"_0\":\"Amount of tokens that can be unstaked by the gateway\"}},\"computationUnitsAmount(uint256,uint256)\":{\"returns\":{\"_0\":\"How much computation units will be allocated for given staked amount and duration\"}},\"computationUnitsAvailable(bytes)\":{\"returns\":{\"_0\":\"Amount of computation units available for the gateway in the current epoch\"}},\"disableAutoExtension()\":{\"details\":\"Disable auto extension of the stake Tokens will get unlocked after the current lock period ends\"},\"enableAutoExtension()\":{\"details\":\"Enable auto extension of the stake If autoextension is enabled, funds would be restaked for the same duration\"},\"getCluster(bytes)\":{\"details\":\"Get all gateways created by the same wallet as the given gateway\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address)\":{\"returns\":{\"_0\":\"List of all stakes made by the gateway\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"register(bytes,string,address)\":{\"details\":\"Register new gateway with given libP2P peerId If gateway address is given, the gateway can call `allocateComputationUnits` function from this address If this is the first gateway for the gateway operator, the default strategy will be used\"},\"register(bytes[],string[],address[])\":{\"details\":\"Register a list of gateways See register function for more info\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setGatewayAddress(bytes,address)\":{\"details\":\"Change gateway address. No two gateways should share address. Address can be set to address(0)\"},\"setIsStrategyAllowed(address,bool,bool)\":{\"details\":\"Allow/ban contract to be used by strategy\"},\"stake(uint256,uint128,bool)\":{\"details\":\"Stake tokens for a period of time for the first time\"},\"staked(address)\":{\"returns\":{\"_0\":\"Amount of tokens staked by the gateway\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unregister(bytes)\":{\"details\":\"Unregister gateway\"},\"unstake()\":{\"details\":\"Unstake tokens. Only tokens past the lock period can be unstaked All gateways in the cluster will be marked as inactive\"},\"useStrategy(address)\":{\"details\":\"set strategy contract address(0) is a manual allocation submitting\"}},\"stateVariables\":{\"activeGateways\":{\"details\":\"A set of all operators that have funds locked\"},\"mana\":{\"details\":\"How much CU is given for a single SQD per 1000 blocks, not including boost factor\"},\"maxGatewaysPerCluster\":{\"details\":\"How many gateways can be operated by a single wallet\"}},\"title\":\"Gateway Registry Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"averageBlockTime()\":{\"notice\":\"Depends on the network\"},\"setIsStrategyAllowed(address,bool,bool)\":{\"notice\":\"if isDefault is true, the strategy will be used for all new gateway operators\"},\"stake(uint256,uint128,bool)\":{\"notice\":\"Allocation units are given according to the non-linear formula Allocations are given to all gateways in the cluster mana * duration * boostFactor, where boostFactor is specified in reward calculation contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GatewayRegistry.sol\":\"GatewayRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@prb/math/=lib/prb-math/\",\":@prb/test/=lib/prb-math/node_modules/@prb/test/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/contracts/=lib/openzeppelin-contracts/contracts/\",\":prb-math/=lib/prb-math/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/GatewayRegistry.sol\":{\"keccak256\":\"0xbf3ee47db3eb39fe0107a7aed3748d75348c5993f85bc8ab2a1e32756f26d253\",\"urls\":[\"bzz-raw://e715af379ad688f47924ed87a1184743d1e4c3cb63df79f46531639c86962e8f\",\"dweb:/ipfs/QmPna34ePAon23rLaS9rVX1c2oLP1f1foLvvJUnLDvoyRQ\"]},\"src/interfaces/IERC20WithMetadata.sol\":{\"keccak256\":\"0xbb632d59c3a3f577d63209a60abd5f9eb97db8b94b04473d0a13603ea9617f24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://241cbb1ad0e0027d05b24d1a7108f8a73f7aec61ea366cb352fe0e3a3e9b526b\",\"dweb:/ipfs/QmThKQAp1WMcRETkKCR2nys1jCSUGmf5Z23U2U8wuBgQbt\"]},\"src/interfaces/IGatewayRegistry.sol\":{\"keccak256\":\"0xd6a3167b437881e5f1e90ceb816b1d4ac0a4cb6bc6d66c5740a87d8516a1c23c\",\"urls\":[\"bzz-raw://17f47ae10e4db112572b602d680f74478861ba0beaa418cf06cca3686481cdd9\",\"dweb:/ipfs/QmVhRW62Xe6vSMvfVmQ3t4c7ZXwdAKYjNyTT7oe5V7bJHY\"]},\"src/interfaces/INetworkController.sol\":{\"keccak256\":\"0xebcd5a06632c059f5f43fa86cddd2f85670f4329adb021292b01657a41061745\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d2f325c113721b47134e19262d7ca995547757411c184342a8db04fa4143990\",\"dweb:/ipfs/QmcceaG9NjpgE9mkNT9aK1VPKENniZkayeFf2Z2YqDuVAi\"]},\"src/interfaces/IRewardCalculation.sol\":{\"keccak256\":\"0xd6d84e4feac894bbb4967bd2f0e300e03cc66100e3865a8b195133ead07812ce\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d874469f63fa81591c23703dd711ad3b7e48416b3552478c4d0361d53f884d34\",\"dweb:/ipfs/QmNqPMLy7aU6mQJ8MMKBByNbtjuu9ih1tBddCprhskak8w\"]},\"src/interfaces/IRouter.sol\":{\"keccak256\":\"0xa3eceb7ae98993cce372706769ea72bbdc9c62650a06d2125f13d6fe3a7358e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcb3f4941c94f44a0869d7d56dab65e84ffde012840fc5e29d1b7190d3f4a261\",\"dweb:/ipfs/QmVBKQM2X78kJ3ctarLfMWWB8zUNLreNMLAawJz8wTFFBz\"]},\"src/interfaces/IStaking.sol\":{\"keccak256\":\"0xab38101f698887a08f07ec8776afce501ab64ea84bdc46354ab065a96396d3b0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://70c5f1a31116dd2294bd7e6eec04300cb42eaf2f5f4fe1ced59a41788c81c781\",\"dweb:/ipfs/QmWUjKDRz6MTuiiMSCfJXZxoPQBfR3TWQoJV2Ln12KvBNQ\"]},\"src/interfaces/IWorkerRegistration.sol\":{\"keccak256\":\"0x093d3c00725a6945e7e25fdd17f669a7ca974fbeafaa50f36ec755ceb0a9fe9f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://48fb28da0398bdd656391fb3c95280559035a3a7937e8f325419dd730d659cc6\",\"dweb:/ipfs/QmVwSHfBRHNRHUjaDo64ENEC3yp7zZeYnZWnZkQ8Rj8n7a\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "type": "error", - "name": "AccessControlBadConfirmation" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "type": "error", - "name": "AccessControlUnauthorizedAccount" - }, - { - "inputs": [], - "type": "error", - "name": "EnforcedPause" - }, - { - "inputs": [], - "type": "error", - "name": "ExpectedPause" - }, - { - "inputs": [], - "type": "error", - "name": "InvalidInitialization" - }, - { - "inputs": [], - "type": "error", - "name": "NotInitializing" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gateway", - "type": "address", - "indexed": true - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes", - "indexed": false - }, - { - "internalType": "uint256[]", - "name": "workerIds", - "type": "uint256[]", - "indexed": false - }, - { - "internalType": "uint256[]", - "name": "shares", - "type": "uint256[]", - "indexed": false - } - ], - "type": "event", - "name": "AllocatedCUs", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "uint128", - "name": "lockEnd", - "type": "uint128", - "indexed": false - } - ], - "type": "event", - "name": "AutoextensionDisabled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "AutoextensionEnabled", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newBlockTime", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "AverageBlockTimeChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "DefaultStrategyChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes", - "indexed": false - }, - { - "internalType": "address", - "name": "newAddress", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "GatewayAddressChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "version", - "type": "uint64", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newCuPerSQD", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "ManaChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newAmount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "MaxGatewaysPerClusterChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes", - "indexed": false - }, - { - "internalType": "string", - "name": "metadata", - "type": "string", - "indexed": false - } - ], - "type": "event", - "name": "MetadataChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "Paused", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "Registered", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32", - "indexed": true - } - ], - "type": "event", - "name": "RoleAdminChanged", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleGranted", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "RoleRevoked", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint128", - "name": "lockStart", - "type": "uint128", - "indexed": false - }, - { - "internalType": "uint128", - "name": "lockEnd", - "type": "uint128", - "indexed": false - }, - { - "internalType": "uint256", - "name": "computationUnits", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Staked", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address", - "indexed": true - }, - { - "internalType": "bool", - "name": "isAllowed", - "type": "bool", - "indexed": false - } - ], - "type": "event", - "name": "StrategyAllowed", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "Unpaused", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "Unregistered", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Unstaked", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "gatewayOperator", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "strategy", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "UsedStrategyChanged", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "PAUSER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "addStake" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "workerIds", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "cus", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "allocateComputationUnits" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "averageBlockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "canUnstake", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "durationBlocks", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "computationUnitsAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "name": "computationUnitsAvailable", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "defaultStrategy", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "disableAutoExtension" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "enableAutoExtension" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "gatewayByAddress", - "outputs": [ - { - "internalType": "bytes32", - "name": "gatewayId", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "pageNumber", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "perPage", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getActiveGateways", - "outputs": [ - { - "internalType": "bytes[]", - "name": "", - "type": "bytes[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "getActiveGatewaysCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getCluster", - "outputs": [ - { - "internalType": "bytes[]", - "name": "clusterPeerIds", - "type": "bytes[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getGateway", - "outputs": [ - { - "internalType": "struct IGatewayRegistry.Gateway", - "name": "", - "type": "tuple", - "components": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "ownAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ] - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getMetadata", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getMyGateways", - "outputs": [ - { - "internalType": "bytes[]", - "name": "", - "type": "bytes[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getStake", - "outputs": [ - { - "internalType": "struct IGatewayRegistry.Stake", - "name": "", - "type": "tuple", - "components": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint128", - "name": "lockStart", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "lockEnd", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "duration", - "type": "uint128" - }, - { - "internalType": "bool", - "name": "autoExtension", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "oldCUs", - "type": "uint256" - } - ] - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getUsedStrategy", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "grantRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "contract IERC20WithMetadata", - "name": "_token", - "type": "address" - }, - { - "internalType": "contract IRouter", - "name": "_router", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "initialize" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "isStrategyAllowed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "mana", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "maxGatewaysPerCluster", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "pause" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "register" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - }, - { - "internalType": "address", - "name": "gatewayAddress", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "register" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "register" - }, - { - "inputs": [ - { - "internalType": "bytes[]", - "name": "peerId", - "type": "bytes[]" - }, - { - "internalType": "string[]", - "name": "metadata", - "type": "string[]" - }, - { - "internalType": "address[]", - "name": "gatewayAddress", - "type": "address[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "register" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceRole" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "revokeRole" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "router", - "outputs": [ - { - "internalType": "contract IRouter", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_newAverageBlockTime", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setAverageBlockTime" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "address", - "name": "newAddress", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setGatewayAddress" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address" - }, - { - "internalType": "bool", - "name": "isAllowed", - "type": "bool" - }, - { - "internalType": "bool", - "name": "isDefault", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setIsStrategyAllowed" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_newMana", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setMana" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxGatewaysPerCluster", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setMaxGatewaysPerCluster" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setMetadata" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint128", - "name": "durationBlocks", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "stake" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint128", - "name": "durationBlocks", - "type": "uint128" - }, - { - "internalType": "bool", - "name": "withAutoExtension", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "stake" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "staked", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function", - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256[][3]", - "name": "a", - "type": "uint256[][3]" - }, - { - "internalType": "struct IGatewayRegistry.Gateway[3]", - "name": "b", - "type": "tuple[3]", - "components": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "ownAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ] - }, - { - "internalType": "struct IGatewayRegistry.Gateway[]", - "name": "c", - "type": "tuple[]", - "components": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "ownAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ] - }, - { - "internalType": "struct IGatewayRegistry.Gateway", - "name": "d", - "type": "tuple", - "components": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "ownAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ] - } - ], - "stateMutability": "view", - "type": "function", - "name": "testAbi", - "outputs": [ - { - "internalType": "uint256", - "name": "ra", - "type": "uint256" - }, - { - "internalType": "string", - "name": "rb", - "type": "string" - }, - { - "internalType": "struct IGatewayRegistry.Gateway", - "name": "rc", - "type": "tuple", - "components": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "ownAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - }, - { - "internalType": "string", - "name": "metadata", - "type": "string" - } - ] - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "token", - "outputs": [ - { - "internalType": "contract IERC20WithMetadata", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "unpause" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "peerId", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unregister" - }, - { - "inputs": [ - { - "internalType": "bytes[]", - "name": "peerId", - "type": "bytes[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unregister" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "unstake" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "useStrategy" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "addStake(uint256)": { - "details": "Add more stake to the existing one" - }, - "allocateComputationUnits(uint256[],uint256[])": { - "details": "Allocate computation units to workers Allocates i-th amount of cus to the worker with i-ths workerId Sum of all cus should not exceed the amount of available cus" - }, - "canUnstake(address)": { - "returns": { - "_0": "Amount of tokens that can be unstaked by the gateway" - } - }, - "computationUnitsAmount(uint256,uint256)": { - "returns": { - "_0": "How much computation units will be allocated for given staked amount and duration" - } - }, - "computationUnitsAvailable(bytes)": { - "returns": { - "_0": "Amount of computation units available for the gateway in the current epoch" - } - }, - "disableAutoExtension()": { - "details": "Disable auto extension of the stake Tokens will get unlocked after the current lock period ends" - }, - "enableAutoExtension()": { - "details": "Enable auto extension of the stake If autoextension is enabled, funds would be restaked for the same duration" - }, - "getCluster(bytes)": { - "details": "Get all gateways created by the same wallet as the given gateway" - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "getStake(address)": { - "returns": { - "_0": "List of all stakes made by the gateway" - } - }, - "grantRole(bytes32,address)": { - "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." - }, - "hasRole(bytes32,address)": { - "details": "Returns `true` if `account` has been granted `role`." - }, - "paused()": { - "details": "Returns true if the contract is paused, and false otherwise." - }, - "register(bytes,string,address)": { - "details": "Register new gateway with given libP2P peerId If gateway address is given, the gateway can call `allocateComputationUnits` function from this address If this is the first gateway for the gateway operator, the default strategy will be used" - }, - "register(bytes[],string[],address[])": { - "details": "Register a list of gateways See register function for more info" - }, - "renounceRole(bytes32,address)": { - "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event." - }, - "revokeRole(bytes32,address)": { - "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." - }, - "setGatewayAddress(bytes,address)": { - "details": "Change gateway address. No two gateways should share address. Address can be set to address(0)" - }, - "setIsStrategyAllowed(address,bool,bool)": { - "details": "Allow/ban contract to be used by strategy" - }, - "stake(uint256,uint128,bool)": { - "details": "Stake tokens for a period of time for the first time" - }, - "staked(address)": { - "returns": { - "_0": "Amount of tokens staked by the gateway" - } - }, - "supportsInterface(bytes4)": { - "details": "See {IERC165-supportsInterface}." - }, - "unregister(bytes)": { - "details": "Unregister gateway" - }, - "unstake()": { - "details": "Unstake tokens. Only tokens past the lock period can be unstaked All gateways in the cluster will be marked as inactive" - }, - "useStrategy(address)": { - "details": "set strategy contract address(0) is a manual allocation submitting" - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "averageBlockTime()": { - "notice": "Depends on the network" - }, - "setIsStrategyAllowed(address,bool,bool)": { - "notice": "if isDefault is true, the strategy will be used for all new gateway operators" - }, - "stake(uint256,uint128,bool)": { - "notice": "Allocation units are given according to the non-linear formula Allocations are given to all gateways in the cluster mana * duration * boostFactor, where boostFactor is specified in reward calculation contract" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "@prb/math/=lib/prb-math/", - "@prb/test/=lib/prb-math/node_modules/@prb/test/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/contracts/=lib/openzeppelin-contracts/contracts/", - "prb-math/=lib/prb-math/src/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/GatewayRegistry.sol": "GatewayRegistry" - }, - "evmVersion": "paris", - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { - "keccak256": "0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225", - "urls": [ - "bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45", - "dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", - "urls": [ - "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", - "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { - "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397", - "urls": [ - "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9", - "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol": { - "keccak256": "0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97", - "urls": [ - "bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007", - "dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { - "keccak256": "0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8", - "urls": [ - "bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45", - "dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { - "keccak256": "0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9", - "urls": [ - "bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f", - "dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4", - "urls": [ - "bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009", - "dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "keccak256": "0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28", - "urls": [ - "bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323", - "dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c", - "urls": [ - "bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e", - "dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { - "keccak256": "0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa", - "urls": [ - "bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1", - "dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA" - ], - "license": "MIT" - }, - "src/GatewayRegistry.sol": { - "keccak256": "0xbf3ee47db3eb39fe0107a7aed3748d75348c5993f85bc8ab2a1e32756f26d253", - "urls": [ - "bzz-raw://e715af379ad688f47924ed87a1184743d1e4c3cb63df79f46531639c86962e8f", - "dweb:/ipfs/QmPna34ePAon23rLaS9rVX1c2oLP1f1foLvvJUnLDvoyRQ" - ], - "license": null - }, - "src/interfaces/IERC20WithMetadata.sol": { - "keccak256": "0xbb632d59c3a3f577d63209a60abd5f9eb97db8b94b04473d0a13603ea9617f24", - "urls": [ - "bzz-raw://241cbb1ad0e0027d05b24d1a7108f8a73f7aec61ea366cb352fe0e3a3e9b526b", - "dweb:/ipfs/QmThKQAp1WMcRETkKCR2nys1jCSUGmf5Z23U2U8wuBgQbt" - ], - "license": "MIT" - }, - "src/interfaces/IGatewayRegistry.sol": { - "keccak256": "0xd6a3167b437881e5f1e90ceb816b1d4ac0a4cb6bc6d66c5740a87d8516a1c23c", - "urls": [ - "bzz-raw://17f47ae10e4db112572b602d680f74478861ba0beaa418cf06cca3686481cdd9", - "dweb:/ipfs/QmVhRW62Xe6vSMvfVmQ3t4c7ZXwdAKYjNyTT7oe5V7bJHY" - ], - "license": null - }, - "src/interfaces/INetworkController.sol": { - "keccak256": "0xebcd5a06632c059f5f43fa86cddd2f85670f4329adb021292b01657a41061745", - "urls": [ - "bzz-raw://2d2f325c113721b47134e19262d7ca995547757411c184342a8db04fa4143990", - "dweb:/ipfs/QmcceaG9NjpgE9mkNT9aK1VPKENniZkayeFf2Z2YqDuVAi" - ], - "license": "UNLICENSED" - }, - "src/interfaces/IRewardCalculation.sol": { - "keccak256": "0xd6d84e4feac894bbb4967bd2f0e300e03cc66100e3865a8b195133ead07812ce", - "urls": [ - "bzz-raw://d874469f63fa81591c23703dd711ad3b7e48416b3552478c4d0361d53f884d34", - "dweb:/ipfs/QmNqPMLy7aU6mQJ8MMKBByNbtjuu9ih1tBddCprhskak8w" - ], - "license": "UNLICENSED" - }, - "src/interfaces/IRouter.sol": { - "keccak256": "0xa3eceb7ae98993cce372706769ea72bbdc9c62650a06d2125f13d6fe3a7358e8", - "urls": [ - "bzz-raw://fcb3f4941c94f44a0869d7d56dab65e84ffde012840fc5e29d1b7190d3f4a261", - "dweb:/ipfs/QmVBKQM2X78kJ3ctarLfMWWB8zUNLreNMLAawJz8wTFFBz" - ], - "license": "UNLICENSED" - }, - "src/interfaces/IStaking.sol": { - "keccak256": "0xab38101f698887a08f07ec8776afce501ab64ea84bdc46354ab065a96396d3b0", - "urls": [ - "bzz-raw://70c5f1a31116dd2294bd7e6eec04300cb42eaf2f5f4fe1ced59a41788c81c781", - "dweb:/ipfs/QmWUjKDRz6MTuiiMSCfJXZxoPQBfR3TWQoJV2Ln12KvBNQ" - ], - "license": "UNLICENSED" - }, - "src/interfaces/IWorkerRegistration.sol": { - "keccak256": "0x093d3c00725a6945e7e25fdd17f669a7ca974fbeafaa50f36ec755ceb0a9fe9f", - "urls": [ - "bzz-raw://48fb28da0398bdd656391fb3c95280559035a3a7937e8f325419dd730d659cc6", - "dweb:/ipfs/QmVwSHfBRHNRHUjaDo64ENEC3yp7zZeYnZWnZkQ8Rj8n7a" - ], - "license": "UNLICENSED" - } - }, - "version": 1 - }, - "id": 84 -}