{
	"deploy": {
		"VM:-": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"main:1": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"ropsten:3": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"rinkeby:4": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"kovan:42": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"görli:5": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"Custom": {
			"linkReferences": {},
			"autoDeployLib": true
		}
	},
	"data": {
		"bytecode": {
			"generatedSources": [],
			"linkReferences": {},
			"object": "",
			"opcodes": "",
			"sourceMap": ""
		},
		"deployedBytecode": {
			"generatedSources": [],
			"immutableReferences": {},
			"linkReferences": {},
			"object": "",
			"opcodes": "",
			"sourceMap": ""
		},
		"gasEstimates": null,
		"methodIdentifiers": {
			"addFunctionality(string,address,uint256,address,bool,string,string,bool,bool)": "2ecc0412",
			"addFunctionality(string,address,uint256,address,bool,string,string,bool,bool,uint256)": "25ad58e3",
			"clearCallingContext()": "d7e5d1af",
			"functionalitiesToJSON()": "618e9ce4",
			"functionalitiesToJSON(uint256,uint256)": "c4fe90d3",
			"functionalityNames()": "34c7354d",
			"functionalityNames(uint256,uint256)": "e0f126b8",
			"functionalityToJSON(string)": "a50f4d48",
			"getFunctionalitiesAmount()": "ceee604e",
			"getFunctionalityData(string)": "c84eec1e",
			"getProxy()": "933a9ce8",
			"hasFunctionality(string)": "3c980804",
			"init(address,uint256,address,uint256,address,uint256,address,uint256,address)": "cbc2c3d9",
			"isAuthorizedFunctionality(address)": "3191d332",
			"isValidFunctionality(address)": "699b6a4e",
			"preConditionCheck(string,bytes,uint8,address,uint256)": "c1423cb0",
			"removeFunctionality(string)": "7b858bbb",
			"setCallingContext(address)": "74f81676",
			"setProxy()": "3914a04f",
			"setupFunctionality(address)": "fd5d2d1b"
		}
	},
	"abi": [
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				},
				{
					"internalType": "address",
					"name": "sourceLocation",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "sourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "location",
					"type": "address"
				},
				{
					"internalType": "bool",
					"name": "submitable",
					"type": "bool"
				},
				{
					"internalType": "string",
					"name": "methodSignature",
					"type": "string"
				},
				{
					"internalType": "string",
					"name": "returnAbiParametersArray",
					"type": "string"
				},
				{
					"internalType": "bool",
					"name": "isInternal",
					"type": "bool"
				},
				{
					"internalType": "bool",
					"name": "needsSender",
					"type": "bool"
				},
				{
					"internalType": "uint256",
					"name": "position",
					"type": "uint256"
				}
			],
			"name": "addFunctionality",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				},
				{
					"internalType": "address",
					"name": "sourceLocation",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "sourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "location",
					"type": "address"
				},
				{
					"internalType": "bool",
					"name": "submitable",
					"type": "bool"
				},
				{
					"internalType": "string",
					"name": "methodSignature",
					"type": "string"
				},
				{
					"internalType": "string",
					"name": "returnAbiParametersArray",
					"type": "string"
				},
				{
					"internalType": "bool",
					"name": "isInternal",
					"type": "bool"
				},
				{
					"internalType": "bool",
					"name": "needsSender",
					"type": "bool"
				}
			],
			"name": "addFunctionality",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "clearCallingContext",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "functionalitiesToJSON",
			"outputs": [
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "uint256",
					"name": "start",
					"type": "uint256"
				},
				{
					"internalType": "uint256",
					"name": "l",
					"type": "uint256"
				}
			],
			"name": "functionalitiesToJSON",
			"outputs": [
				{
					"internalType": "string",
					"name": "functionsJSONArray",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "functionalityNames",
			"outputs": [
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "uint256",
					"name": "start",
					"type": "uint256"
				},
				{
					"internalType": "uint256",
					"name": "l",
					"type": "uint256"
				}
			],
			"name": "functionalityNames",
			"outputs": [
				{
					"internalType": "string",
					"name": "functionsJSONArray",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				}
			],
			"name": "functionalityToJSON",
			"outputs": [
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "getFunctionalitiesAmount",
			"outputs": [
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				}
			],
			"name": "getFunctionalityData",
			"outputs": [
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				},
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				},
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "getProxy",
			"outputs": [
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				}
			],
			"name": "hasFunctionality",
			"outputs": [
				{
					"internalType": "bool",
					"name": "",
					"type": "bool"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "sourceLocation",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "getMinimumBlockNumberSourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "getMinimumBlockNumberFunctionalityAddress",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "getEmergencyMinimumBlockNumberSourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "getEmergencyMinimumBlockNumberFunctionalityAddress",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "getEmergencySurveyStakingSourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "getEmergencySurveyStakingFunctionalityAddress",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "checkVoteResultSourceLocationId",
					"type": "uint256"
				},
				{
					"internalType": "address",
					"name": "checkVoteResultFunctionalityAddress",
					"type": "address"
				}
			],
			"name": "init",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "functionality",
					"type": "address"
				}
			],
			"name": "isAuthorizedFunctionality",
			"outputs": [
				{
					"internalType": "bool",
					"name": "",
					"type": "bool"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "functionality",
					"type": "address"
				}
			],
			"name": "isValidFunctionality",
			"outputs": [
				{
					"internalType": "bool",
					"name": "",
					"type": "bool"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				},
				{
					"internalType": "bytes",
					"name": "data",
					"type": "bytes"
				},
				{
					"internalType": "uint8",
					"name": "submitable",
					"type": "uint8"
				},
				{
					"internalType": "address",
					"name": "sender",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "preConditionCheck",
			"outputs": [
				{
					"internalType": "address",
					"name": "location",
					"type": "address"
				},
				{
					"internalType": "bytes",
					"name": "payload",
					"type": "bytes"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "string",
					"name": "codeName",
					"type": "string"
				}
			],
			"name": "removeFunctionality",
			"outputs": [
				{
					"internalType": "bool",
					"name": "removed",
					"type": "bool"
				},
				{
					"internalType": "uint256",
					"name": "position",
					"type": "uint256"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "location",
					"type": "address"
				}
			],
			"name": "setCallingContext",
			"outputs": [
				{
					"internalType": "bool",
					"name": "",
					"type": "bool"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "setProxy",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "proposalAddress",
					"type": "address"
				}
			],
			"name": "setupFunctionality",
			"outputs": [
				{
					"internalType": "bool",
					"name": "",
					"type": "bool"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		}
	]
}