Data Processor API
Methods
ABI
Bytecode
Source Code

_addDPRequest 3701f582

Adds new Data Processor Request
inputs
0
uint8
_cpuRequest
The number of cpu cores
1
uint8
_memRequest
The amount of ram in GB
2
uint8
_storageRequest
The amount of storage in GB
3
uint8
_bandwidthRequest
The bandwidth amount
4
uint16
_duration
The amount of time the resource can be offered
5
uint8
_minPrice
The minimum price accepted for processing request
6
string
_metadata1
Metadata to store in request
7
string
_metadata2
Metadata to store in request
8
string
_metadata3
Metadata to store in request
9
string
_metadata4
Metadata to store in request
outputs
0
uint256
_rowNumber
Data processor request id

_addProcessorToOrder 4509b7e0

Adds a processor to order
inputs
0
uint256
_orderItem
Order number
1
address
processor
Processor address
outputs
0
bool
success
Status of operation

_addResultToOrder 14e9f384

Adds result to order
inputs
0
uint256
_orderItem
Order number
1
string
_result
processor output after processing
outputs
0
bool
success
Status of operation

_approveOrder efa09d85

Approves order - orders can be processed only after being approved by other part(do/dp)
inputs
0
uint256
_orderItem
the order id
outputs
0
bool
success
Status of operation

_cancelDPRequest 676a96d8

Cancels a data processor request
inputs
0
uint256
_requestListItem
the request id

_getDPRequest 00d74970

Gets details of a specific data processor request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
dproc
Data processor address
1
uint8
cpuRequest
The number of cpu cores[maximum 255]
2
uint8
memoryRequest
The amount of ram in GB[maximum 255]
3
uint8
storageRequest
The amount of storage in GB[maximum 255]
4
uint8
bandwidthRequest
The bandwidth amount[maximum 255]
5
uint16
duration
The amount of time the resource can be offered
6
uint8
minPrice
The minimum price accepted for processing request
7
uint256
status
The request status [values in Available/Booked/Canceled

_getDPRequestMetadata 98455999

Gets metadata of a data processor request
inputs
0
uint256
_requestListItem
the request id
outputs
0
address
dproc
1
string
metadata1
2
string
metadata2
3
string
metadata3
4
string
metadata4

_getDPRequestsCount e780ada1

Gets total count of Data Processor Requests
outputs
0
uint256
_length
The counter of dp requests

_getMyDOOrders a8203abb

Gets the list of orders
outputs
0
uint256[]
req
Orders list
function, constant

_getMyDPRequests 4c1782e5

Gets all data processor request id list
outputs
0
uint256[]
req
An array containing all data processor requests

_getOrder b3bb3da3

Gets order info
inputs
0
uint256
_orderItem
the order id
outputs
0
address
downer
Data owner address
1
address
dproc
Data processor address
2
uint256
doRequest
Data owner request id
3
uint256
dpRequest
Data processor request id
4
uint256
status
Order status

_getOrdersCount 246439e6

Gets order count
outputs
0
uint256
_length
Order count

_getResultFromOrder 008a81a6

Gets result from order
inputs
0
uint256
_orderItem
Order number
outputs
0
string
_Result
Order Result

_placeOrder 9818e66c

Places new order - this can placed by dp/do
inputs
0
uint256
_doRequestItem
the data owner request id
1
uint256
_dpRequestItem
the data processor request id
outputs
0
uint256
_orderNumber
Order number
"[{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getResultFromOrder\",\"outputs\":[{\"name\":\"_Result\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequest\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"minPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"_addResultToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForDPRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOrdersCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_minPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newProxy\",\"type\":\"address\"}],\"name\":\"transferProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"},{\"name\":\"processor\",\"type\":\"address\"}],\"name\":\"_addProcessorToOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDPRequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequest\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"cpuRequest\",\"type\":\"uint8\"},{\"name\":\"memoryRequest\",\"type\":\"uint8\"},{\"name\":\"storageRequest\",\"type\":\"uint8\"},{\"name\":\"bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"duration\",\"type\":\"uint16\"},{\"name\":\"maxPrice\",\"type\":\"uint8\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDPRequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"implementationPro\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDORequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cpuRequest\",\"type\":\"uint8\"},{\"name\":\"_memRequest\",\"type\":\"uint8\"},{\"name\":\"_storageRequest\",\"type\":\"uint8\"},{\"name\":\"_bandwidthRequest\",\"type\":\"uint8\"},{\"name\":\"_duration\",\"type\":\"uint16\"},{\"name\":\"_instances\",\"type\":\"uint8\"},{\"name\":\"_maxPrice\",\"type\":\"uint8\"},{\"name\":\"_metadata1\",\"type\":\"string\"},{\"name\":\"_metadata2\",\"type\":\"string\"},{\"name\":\"_metadata3\",\"type\":\"string\"},{\"name\":\"_metadata4\",\"type\":\"string\"}],\"name\":\"_addDORequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDORequests\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_doRequestItem\",\"type\":\"uint256\"},{\"name\":\"_dpRequestItem\",\"type\":\"uint256\"}],\"name\":\"_placeOrder\",\"outputs\":[{\"name\":\"_orderNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDPRequestMetadata\",\"outputs\":[{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_cancelDORequest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"FixedSupplyToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getMyDOOrders\",\"outputs\":[{\"name\":\"req\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_getOrder\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"dproc\",\"type\":\"address\"},{\"name\":\"doRequest\",\"type\":\"uint256\"},{\"name\":\"dpRequest\",\"type\":\"uint256\"},{\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_key\",\"type\":\"string\"},{\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"_addMetadataToDPRequest\",\"outputs\":[{\"name\":\"_rowNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getDORequestMetadata\",\"outputs\":[{\"name\":\"downer\",\"type\":\"address\"},{\"name\":\"metadata1\",\"type\":\"string\"},{\"name\":\"metadata2\",\"type\":\"string\"},{\"name\":\"metadata3\",\"type\":\"string\"},{\"name\":\"metadata4\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferAnyERC20Token\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenOwner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataCountForDPRequest\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getDPRequestsCount\",\"outputs\":[{\"name\":\"_length\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orderItem\",\"type\":\"uint256\"}],\"name\":\"_approveOrder\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_requestListItem\",\"type\":\"uint256\"},{\"name\":\"_metadataItem\",\"type\":\"uint256\"}],\"name\":\"_getMetadataValueForRequest\",\"outputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"caller\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"ProxyTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"tokenOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600f81526020017f45746865726e69747920546f6b656e000000000000000000000000000000000081525060049080519060200190620000d292919062000255565b506040805190810160405280600481526020017f45544e5900000000000000000000000000000000000000000000000000000000815250600390805190602001906200012092919062000255565b506012600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff1660ff16600a0a633b9aca0002600681905550600654600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000304565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029857805160ff1916838001178555620002c9565b82800160010185558215620002c9579182015b82811115620002c8578251825591602001919060010190620002ab565b5b509050620002d89190620002dc565b5090565b6200030191905b80821115620002fd576000816000905550600101620002e3565b5090565b90565b617a6880620003146000396000f300608060405260043610610239576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680628a81a61461023e578062d74970146102e457806306fdde03146103a8578063095ea7b31461043857806314e9f3841461049d57806318160ddd146105285780632118c02c1461055357806323b872dd1461066f578063246439e6146106f4578063313ce5671461071f5780633701f582146107505780633eaaf86b146108ee578063438787d01461091957806344cc3c7f1461095c5780634509b7e014610a295780634c1782e514610a8e5780634f74787b14610afa5780635c60da1b14610bbe5780635d87b6e614610c15578063676a96d814610c5657806370a0823114610c8357806374ed9ae414610cda57806379ba509714610d315780637aed121414610d485780638da5cb5b14610d7357806392b9377414610dca5780639313236614610f7557806395d89b4114610fe15780639818e66c1461107157806398455999146110bc5780639ecbec41146112d9578063a1183d5014611306578063a8203abb1461131d578063a9059cbb14611389578063b3bb3da3146113ee578063b5d11dfa146114a3578063cae9ca5114611570578063d4ee1d901461161b578063d9edc13914611672578063dc39d06d1461188f578063dd62ed3e146118f4578063e2eef9c31461196b578063e780ada1146119ac578063efa09d85146119d7578063f2fde38b14611a1c578063f4de530514611a5f578063fc9c8d3914611b7b575b600080fd5b34801561024a57600080fd5b5061026960048036038101908080359060200190929190505050611bd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a957808201518184015260208101905061028e565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f057600080fd5b5061030f60048036038101908080359060200190929190505050611f0b565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b3480156103b457600080fd5b506103bd6121ac565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103fd5780820151818401526020810190506103e2565b50505050905090810190601f16801561042a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044457600080fd5b50610483600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061224a565b604051808215151515815260200191505060405180910390f35b3480156104a957600080fd5b5061050e60048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061233c565b604051808215151515815260200191505060405180910390f35b34801561053457600080fd5b5061053d6125f3565b6040518082815260200191505060405180910390f35b34801561055f57600080fd5b50610588600480360381019080803590602001909291908035906020019092919050505061263e565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561067b57600080fd5b506106da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612975565b604051808215151515815260200191505060405180910390f35b34801561070057600080fd5b50610709612c20565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734612c89565b604051808260ff1660ff16815260200191505060405180910390f35b34801561075c57600080fd5b506108d8600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c9c565b6040518082815260200191505060405180910390f35b3480156108fa57600080fd5b50610903613288565b6040518082815260200191505060405180910390f35b34801561092557600080fd5b5061095a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061328e565b005b34801561096857600080fd5b50610a1360048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506133bc565b6040518082815260200191505060405180910390f35b348015610a3557600080fd5b50610a7460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061362e565b604051808215151515815260200191505060405180910390f35b348015610a9a57600080fd5b50610aa361390f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ae6578082015181840152602081019050610acb565b505050509050019250505060405180910390f35b348015610b0657600080fd5b50610b2560048036038101908080359060200190929190505050613a00565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018461ffff1661ffff1681526020018360ff1660ff1681526020018281526020019850505050505050505060405180910390f35b348015610bca57600080fd5b50610bd3613ca1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2157600080fd5b50610c4060048036038101908080359060200190929190505050613cc7565b6040518082815260200191505060405180910390f35b348015610c6257600080fd5b50610c8160048036038101908080359060200190929190505050613dd6565b005b348015610c8f57600080fd5b50610cc4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140d4565b6040518082815260200191505060405180910390f35b348015610ce657600080fd5b50610cef61411d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3d57600080fd5b50610d46614143565b005b348015610d5457600080fd5b50610d5d6142e2565b6040518082815260200191505060405180910390f35b348015610d7f57600080fd5b50610d8861434b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dd657600080fd5b50610f5f600480360381019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050614370565b6040518082815260200191505060405180910390f35b348015610f8157600080fd5b50610f8a614a55565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610fcd578082015181840152602081019050610fb2565b505050509050019250505060405180910390f35b348015610fed57600080fd5b50610ff6614b46565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561103657808201518184015260208101905061101b565b50505050905090810190601f1680156110635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561107d57600080fd5b506110a66004803603810190808035906020019092919080359060200190929190505050614be4565b6040518082815260200191505060405180910390f35b3480156110c857600080fd5b506110e76004803603810190808035906020019092919050505061562d565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561116557808201518184015260208101905061114a565b50505050905090810190601f1680156111925780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156111cb5780820151818401526020810190506111b0565b50505050905090810190601f1680156111f85780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015611231578082015181840152602081019050611216565b50505050905090810190601f16801561125e5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561129757808201518184015260208101905061127c565b50505050905090810190601f1680156112c45780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156112e557600080fd5b50611304600480360381019080803590602001909291905050506159f4565b005b34801561131257600080fd5b5061131b615cec565b005b34801561132957600080fd5b50611332615eb3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561137557808201518184015260208101905061135a565b505050509050019250505060405180910390f35b34801561139557600080fd5b506113d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615fa4565b604051808215151515815260200191505060405180910390f35b3480156113fa57600080fd5b506114196004803603810190808035906020019092919050505061613f565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156114af57600080fd5b5061155a60048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061633c565b6040518082815260200191505060405180910390f35b34801561157c57600080fd5b50611601600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506165d4565b604051808215151515815260200191505060405180910390f35b34801561162757600080fd5b50611630616823565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561167e57600080fd5b5061169d60048036038101908080359060200190929190505050616849565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561171b578082015181840152602081019050611700565b50505050905090810190601f1680156117485780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015611781578082015181840152602081019050611766565b50505050905090810190601f1680156117ae5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156117e75780820151818401526020810190506117cc565b50505050905090810190601f1680156118145780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561184d578082015181840152602081019050611832565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561189b57600080fd5b506118da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616c7d565b604051808215151515815260200191505060405180910390f35b34801561190057600080fd5b50611955600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616e70565b6040518082815260200191505060405180910390f35b34801561197757600080fd5b5061199660048036038101908080359060200190929190505050616ef7565b6040518082815260200191505060405180910390f35b3480156119b857600080fd5b506119c1617006565b6040518082815260200191505060405180910390f35b3480156119e357600080fd5b50611a026004803603810190808035906020019092919050505061706f565b604051808215151515815260200191505060405180910390f35b348015611a2857600080fd5b50611a5d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617454565b005b348015611a6b57600080fd5b50611a946004803603810190808035906020019092919080359060200190929190505050617582565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ad8578082015181840152602081019050611abd565b50505050905090810190601f168015611b055780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611b3e578082015181840152602081019050611b23565b50505050905090810190601f168015611b6b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015611b8757600080fd5b50611b906178b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c3257600080fd5b60008310158015611c47575060108054905083105b1515611cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b601083815481101515611cca57fe5b90600052602060002090600c020190508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611da1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c79206f776e65722063616e20726561642074686520726573756c74730081525060200191505060405180910390fd5b60026003811115611dae57fe5b81600b0160009054906101000a900460ff166003811115611dcb57fe5b141515611e66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f6f6e6c7920636c6f736564206f7264657273206861766520746865207265737581526020017f6c7400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806009018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611efe5780601f10611ed357610100808354040283529160200191611efe565b820191906000526020600020905b815481529060010190602001808311611ee157829003601f168201915b5050505050915050919050565b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7357600080fd5b60008910158015611f885750600f8054905089105b1515611ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420696e6465782070726f76696465642e00000000000000000081525060200191505060405180910390fd5b600f8981548110151561200b57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600f8981548110151561204e57fe5b906000526020600020906008020160070160009054906101000a900460ff16600281111561207857fe5b905087600f8a81548110151561208a57fe5b906000526020600020906008020160000160149054906101000a900460ff16600f8b8154811015156120b857fe5b906000526020600020906008020160000160159054906101000a900460ff16600f8c8154811015156120e657fe5b906000526020600020906008020160000160169054906101000a900460ff16600f8d81548110151561211457fe5b906000526020600020906008020160000160179054906101000a900460ff16600f8e81548110151561214257fe5b906000526020600020906008020160000160189054906101000a900461ffff16600f8f81548110151561217157fe5b9060005260206000209060080201600001601a9054906101000a900460ff168797509750975097509750975097509750919395975091939597565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122425780601f1061221757610100808354040283529160200191612242565b820191906000526020600020905b81548152906001019060200180831161222557829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561239b57600080fd5b600084101580156123b0575060108054905084105b1515612424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c6964206f7264657220696e6465780000000000000000000000000081525060200191505060405180910390fd5b60108481548110151561243357fe5b90600052602060002090600c020190508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffff