dgf-prototype/frontend/contractArtifacts/DAO.json

828 lines
114 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "DAO",
"sourceName": "contracts/core/DAO.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "id",
"type": "string"
}
],
"name": "PostAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "ValidationPoolInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "votePasses",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "quorumMet",
"type": "bool"
}
],
"name": "ValidationPoolResolved",
"type": "event"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "weightPercent",
"type": "uint256"
},
{
"internalType": "address",
"name": "authorAddress",
"type": "address"
}
],
"internalType": "struct Author[]",
"name": "authors",
"type": "tuple[]"
},
{
"internalType": "string",
"name": "contentId",
"type": "string"
},
{
"components": [
{
"internalType": "int256",
"name": "weightPercent",
"type": "int256"
},
{
"internalType": "string",
"name": "targetPostId",
"type": "string"
}
],
"internalType": "struct Citation[]",
"name": "citations",
"type": "tuple[]"
}
],
"name": "addPost",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "delegatedStakeOnValidationPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "evaluateOutcome",
"outputs": [
{
"internalType": "bool",
"name": "votePasses",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "postId",
"type": "string"
}
],
"name": "getPostAuthors",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "weightPercent",
"type": "uint256"
},
{
"internalType": "address",
"name": "authorAddress",
"type": "address"
}
],
"internalType": "struct Author[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "postId",
"type": "string"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256[2]",
"name": "quorum",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "winRatio",
"type": "uint256[2]"
},
{
"internalType": "uint256",
"name": "bindingPercent",
"type": "uint256"
},
{
"internalType": "bool",
"name": "redistributeLosingStakes",
"type": "bool"
},
{
"internalType": "bool",
"name": "callbackOnValidate",
"type": "bool"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"name": "initiateValidationPool",
"outputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isMember",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "memberCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "members",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "postCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "postIds",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "posts",
"outputs": [
{
"internalType": "string",
"name": "id",
"type": "string"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "reputation",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "stakeAvailability",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "stakeOnValidationPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "validationPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "validationPools",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "string",
"name": "postId",
"type": "string"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "minted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "stakeCount",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256[2]",
"name": "quorum",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "winRatio",
"type": "uint256[2]"
},
{
"internalType": "uint256",
"name": "bindingPercent",
"type": "uint256"
},
{
"internalType": "bool",
"name": "redistributeLosingStakes",
"type": "bool"
}
],
"internalType": "struct ValidationPoolParams",
"name": "params",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endTime",
"type": "uint256"
},
{
"internalType": "bool",
"name": "resolved",
"type": "bool"
},
{
"internalType": "bool",
"name": "outcome",
"type": "bool"
},
{
"internalType": "bool",
"name": "callbackOnValidate",
"type": "bool"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405260036009556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615ee880620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613a99565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613b63565b6106e0565b6040516101af9190613bbe565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613be8565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613be8565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613c03565b61070f565b6040516102429190613bbe565b60405180910390f35b34801561025757600080fd5b5061026061129a565b60405161026d9190613be8565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613c30565b6112a4565b6040516102aa9190613bbe565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613caf565b6112e1565b005b3480156102e857600080fd5b506102f161130a565b6040516102fe9190613d1e565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613c03565b611313565b60405161033b9190613a99565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613c03565b6113bf565b6040516103789190613d48565b60405180910390f35b34801561038d57600080fd5b506103966113f2565b6040516103a39190613be8565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613d63565b6113f8565b6040516103e09190613be8565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613d90565b611440565b60405161041d9190613bbe565b60405180910390f35b34801561043257600080fd5b5061043b6114c7565b6040516104489190613a99565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613de3565b611559565b005b610494600480360381019061048f9190613f27565b61158e565b6040516104a19190613be8565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613d63565b611a48565b6040516104de9190613bbe565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613c03565b611a68565b6040516105269c9b9a99989796959493929190614197565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613b63565b611ce2565b6040516105639190613bbe565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614261565b611d1f565b6040516105a0919061439b565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb91906143bd565b611e08565b6040516105dd9190613be8565b60405180910390f35b3480156105f257600080fd5b5061060d600480360381019061060891906144a9565b611e8f565b005b34801561061b57600080fd5b506106366004803603810190610631919061468d565b61235c565b604051610645939291906146d6565b60405180910390f35b60606003805461065d90614743565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614743565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612444565b90506106f881858561244c565b600191505092915050565b600d5481565b60075481565b600080600a60008481526020019081526020016000209050600060058260010160405161073c9190614817565b908152602001604051809103902090506000151582600f0160009054906101000a900460ff161515146107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b9061487a565b60405180910390fd5b600080600080600090505b85600501548110156108205785600401600082815260200190815260200160002091508160010160009054906101000a900460ff1615610800578160020154846107f991906148c9565b9350610813565b81600201548361081091906148c9565b92505b80806001019150506107af565b5060028560030154610832919061492c565b8361083d91906148c9565b925060028560030154610850919061492c565b8261085b91906148c9565b9150600060028660030154610870919061495d565b146108855760018361088291906148c9565b92505b84600e01544211806108a8575061089a61129a565b82846108a691906148c9565b145b6108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90614a00565b60405180910390fd5b8460060160010160006002811061090157610900614a20565b5b015461090b61129a565b6109159190614a4f565b828461092191906148c9565b8660060160010160016002811061093b5761093a614a20565b5b01546109479190614a4f565b11610a7857600185600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818760008060405161099d93929190614a91565b60405180910390a184600f0160029054906101000a900460ff1615610a6a578460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d587600086868a6010016040518663ffffffff1660e01b8152600401610a25959493929190614b61565b6020604051808303816000875af1158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190614bd0565b505b600095505050505050611295565b84600601600301600060028110610a9257610a91614a20565b5b01548284610aa091906148c9565b610aaa9190614a4f565b85600601600301600160028110610ac457610ac3614a20565b5b015484610ad19190614a4f565b101595508515610c5b5760005b8460020180549050811015610c59576000856002018281548110610b0557610b04614a20565b5b906000526020600020906002020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c4b5780600c6000600d6000815480929190610ba290614bfd565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050610ade565b505b600185600f0160006101000a81548160ff0219169083151502179055508585600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8187876001604051610cc893929190614a91565b60405180910390a1600086610cdd5782610cdf565b835b905060008060005b8860050154811015610de75788600401600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151514610dda57600060648a600601600501548760020154610d419190614a4f565b610d4b919061492c565b90508960060160060160009054906101000a900460ff1615610da957610d968660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308361245e565b8084610da291906148c9565b9350610dd8565b610dd78660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612683565b5b505b8080600101915050610ce7565b508815610fe55760028860030154610dff919061492c565b82610e0a91906148c9565b915060005b8860050154811015610ef55788600401600082815260200190815260200160002094508860060160060160009054906101000a900460ff168015610e6757508460010160009054906101000a900460ff1615158a1515145b15610ee857600060648a6006016005015486886002015487610e899190614a4f565b610e93919061492c565b610e9d9190614a4f565b610ea7919061492c565b90508083610eb591906148c9565b9250610ee6308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361245e565b505b8080600101915050610e0f565b5060008183610f049190614c45565b9050600060028a60030154610f19919061495d565b14610f2e57600181610f2b91906148c9565b90505b610fdf896001018054610f4090614743565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6c90614743565b8015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b50505050508260028c60030154610fd0919061492c565b610fda91906148c9565b612705565b506110fd565b876003015482610ff591906148c9565b915060005b88600501548110156110fb5788600401600082815260200190815260200160002094508860060160060160009054906101000a900460ff16801561105257508460010160009054906101000a900460ff1615158a1515145b156110ee57600060648a6006016005015460028c60030154611074919061492c565b8761107f9190614c45565b88600201548761108f9190614a4f565b611099919061492c565b6110a39190614a4f565b6110ad919061492c565b905080836110bb91906148c9565b92506110ec308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361245e565b505b8080600101915050610ffa565b505b60005b600d548110156111c6576000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061114c61129a565b611155836113f8565b8c600d01546111649190614a4f565b61116e919061492c565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111b6573d6000803e3d6000fd5b5050508080600101915050611100565b5087600f0160029054906101000a900460ff161561128c578760020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58a600189898d6010016040518663ffffffff1660e01b8152600401611247959493929190614b61565b6020604051808303816000875af1158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190614bd0565b505b50505050505050505b919050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614cc5565b60405180910390fd5b6000600a6000858152602001908152602001600020905061130481338585612717565b50505050565b60006009905090565b6006818154811061132357600080fd5b90600052602060002001600091509050805461133e90614743565b80601f016020809104026020016040519081016040528092919081815260200182805461136a90614743565b80156113b75780601f1061138c576101008083540402835291602001916113b7565b820191906000526020600020905b81548152906001019060200180831161139a57829003601f168201915b505050505081565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061144d33858561244c565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161148a93929190614ce5565b600060405180830381600087803b1580156114a457600080fd5b505af11580156114b8573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546114d690614743565b80601f016020809104026020016040519081016040528092919081815260200182805461150290614743565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b6000600a6000868152602001908152602001600020905061157b84338561280d565b61158781858585612717565b5050505050565b60008034116115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614d8e565b60405180910390fd5b6001891015611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90614dfa565b60405180910390fd5b651cae8c13e00089111561165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690614e66565b60405180910390fd5b8760016002811061167357611672614a20565b5b6020020135600f60006002811061168d5761168c614a20565b5b01546116999190614a4f565b886000600281106116ad576116ac614a20565b5b6020020135600f6001600281106116c7576116c6614a20565b5b01546116d39190614a4f565b1015611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90614ed2565b60405180910390fd5b8760016002811061172857611727614a20565b5b60200201358860006002811061174157611740614a20565b5b60200201351115611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90614f3e565b60405180910390fd5b8660016002811061179b5761179a614a20565b5b6020020135876000600281106117b4576117b3614a20565b5b602002013511156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190614faa565b60405180910390fd5b606486111561183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590615016565b60405180910390fd5b600060058c8c60405161185292919061505b565b9081526020016040518091039020905060008160020180549050036118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a3906150c0565b60405180910390fd5b600b60008154809291906118bf90614bfd565b9190505591506000600a60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c826001019182611932929190615282565b503481600d018190555089816006016001019060026119529291906139ac565b5088816006016003019060026119699291906139ac565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426119ad91906148c9565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826119ed9291906153a3565b506119f830346128a1565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a83604051611a309190613be8565b60405180910390a150509a9950505050505050505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a602052806000526040600020600091509050806000015490806001018054611a9190614743565b80601f0160208091040260200160405190810160405280929190818152602001828054611abd90614743565b8015611b0a5780601f10611adf57610100808354040283529160200191611b0a565b820191906000526020600020905b815481529060010190602001808311611aed57829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611b97576020028201915b815481526020019060010190808311611b83575b5050505050815260200160038201600280602002604051908101604052809291908260028015611bdc576020028201915b815481526020019060010190808311611bc8575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611c5f90614743565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8b90614743565b8015611cd85780601f10611cad57610100808354040283529160200191611cd8565b820191906000526020600020905b815481529060010190602001808311611cbb57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690614cc5565b60405180910390fd5b6060600060058484604051611d3592919061505b565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611dfb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611d69565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc906154e5565b60405180910390fd5b60076000815480929190611ee890614bfd565b91905055506006848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611f2a929190615282565b50600060058585604051611f3f92919061505b565b908152602001604051809103902090506000816002018054905014611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9090615577565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611fef929190615282565b50600080600090505b8888905081101561208e5788888281811061201657612015614a20565b5b905060400201600001358261202b91906148c9565b91508260020189898381811061204457612043614a20565b5b9050604002019080600181540180825580915050600190039060005260206000209060020201600090919091909150818161207f9190615724565b50508080600101915050611ff8565b50606481146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c99061577e565b60405180910390fd5b60005b8484905081101561214d57826003018585838181106120f7576120f6614a20565b5b905060200281019061210991906157ad565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161213e9190615914565b505080806001019150506120d5565b5060008060005b846003018054905081101561226f57600085600301828154811061217b5761217a614a20565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8112156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990615994565b60405180910390fd5b6064811315612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90615a26565b60405180910390fd5b600081131561225257808461224b9190615a46565b9350612261565b808361225e9190615a46565b92505b508080600101915050612154565b5060648213156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90615afc565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e90615b8e565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af2497278888604051612348929190615bdb565b60405180910390a150505050505050505050565b60058180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461239590614743565b80601f01602080910402602001604051908101604052809291908181526020018280546123c190614743565b801561240e5780601f106123e35761010080835404028352916020019161240e565b820191906000526020600020905b8154815290600101906020018083116123f157829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6124598383836001612923565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b05780600260008282546124a491906148c9565b92505081905550612583565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561253c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161253393929190614ce5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125cc5780600260008282540392505081905550612619565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126769190613be8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f55760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016126ec9190613d48565b60405180910390fd5b6127018260008361245e565b5050565b6127128282600080612afa565b505050565b83600e015442111561275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590615c4b565b60405180910390fd5b600084600501600081548092919061277590614bfd565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006128198484611e08565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461289b578181101561288b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161288293929190614ce5565b60405180910390fd5b61289a84848484036000612923565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129135760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161290a9190613d48565b60405180910390fd5b61291f6000838361245e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129955760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161298c9190613d48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a075760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016129fe9190613d48565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612af4578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612aeb9190613be8565b60405180910390a35b50505050565b60006009548210612b0d5783905061369a565b6000600586604051612b1f9190615c9c565b908152602001604051809103902090506000816002018054905003612b47578491505061369a565b60005b8160030180549050811015612c7b576000826003018281548110612b7157612b70614a20565b5b9060005260206000209060020201600001541215612c6e57612c6087836003018381548110612ba357612ba2614a20565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612bd690614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0290614743565b8015612c4f5780601f10612c2457610100808354040283529160200191612c4f565b820191906000526020600020905b815481529060010190602001808311612c3257829003601f168201915b5050505050815250508888886136a2565b86612c6b9190615cb3565b95505b8080600101915050612b4a565b5060005b8160030180549050811015612db0576000826003018281548110612ca657612ca5614a20565b5b9060005260206000209060020201600001541315612da357612d9587836003018381548110612cd857612cd7614a20565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612d0b90614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3790614743565b8015612d845780601f10612d5957610100808354040283529160200191612d84565b820191906000526020600020905b815481529060010190602001808311612d6757829003601f168201915b5050505050815250508888886136a2565b86612da09190615cb3565b95505b8080600101915050612c7f565b50600085131561309c5761307b816040518060a0016040529081600082018054612dd990614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0590614743565b8015612e525780601f10612e2757610100808354040283529160200191612e52565b820191906000526020600020905b815481529060010190602001808311612e3557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612f685783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612ed6565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015613063578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612fd290614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612ffe90614743565b801561304b5780601f106130205761010080835404028352916020019161304b565b820191906000526020600020905b81548152906001019060200180831161302e57829003601f168201915b50505050508152505081526020019060010190612f95565b5050505081526020016004820154815250508661386b565b508481600401600082825461309091906148c9565b92505081905550613698565b60008582600401546130ae9190615a46565b1261339f57613374816040518060a00160405290816000820180546130d290614743565b80601f01602080910402602001604051908101604052809291908181526020018280546130fe90614743565b801561314b5780601f106131205761010080835404028352916020019161314b565b820191906000526020600020905b81548152906001019060200180831161312e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156132615783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906131cf565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561335c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546132cb90614743565b80601f01602080910402602001604051908101604052809291908181526020018280546132f790614743565b80156133445780601f1061331957610100808354040283529160200191613344565b820191906000526020600020905b81548152906001019060200180831161332757829003601f168201915b5050505050815250508152602001906001019061328e565b5050505081526020016004820154815250508661386b565b91508461338090615cf6565b8160040160008282546133939190614c45565b92505081905550613697565b8481600401546133af9190615a46565b915061367f816040518060a00160405290816000820180546133d090614743565b80601f01602080910402602001604051908101604052809291908181526020018280546133fc90614743565b80156134495780601f1061341e57610100808354040283529160200191613449565b820191906000526020600020905b81548152906001019060200180831161342c57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561355f5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906134cd565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561365a5783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546135c990614743565b80601f01602080910402602001604051908101604052809291908181526020018280546135f590614743565b80156136425780601f1061361757610100808354040283529160200191613642565b820191906000526020600020905b81548152906001019060200180831161362557829003601f168201915b5050505050815250508152602001906001019061358c565b505050508152602001600482015481525050826004015461367a90615cf6565b61386b565b8261368a9190615a46565b9150600081600401819055505b5b505b949350505050565b600060648560000151856136b69190615d3e565b6136c09190615db6565b9050600085602001515103613722576000811215613713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370a90615e92565b60405180910390fd5b61371d3082612683565b613862565b60006008876040516137349190615c9c565b908152602001604051809103902086602001516040516137549190615c9c565b908152602001604051809103902054905083156137c157600082121561379c578061377e90615cf6565b8213613793578061378e90615cf6565b613795565b815b91506137c0565b806137a690615cf6565b82126137bb57806137b690615cf6565b6137bd565b815b91505b5b60006137fa87602001518487806137e857506000871480156137e7575060008a60000151125b5b6001886137f591906148c9565b612afa565b905080836138089190615cb3565b92508260088960405161381b9190615c9c565b9081526020016040518091039020886020015160405161383b9190615c9c565b908152602001604051809103902060008282546138589190615a46565b9250508190555050505b95945050505050565b60008060005b8460400151518110156139a45760008560400151828151811061389757613896614a20565b5b60200260200101519050600060018760400151516138b59190614c45565b8310156138ed5760648260000151876138ce9190615d3e565b6138d89190615db6565b905080846138e69190615a46565b93506138fc565b83866138f99190615cb3565b90505b6000811315613919576139143083602001518361245e565b613995565b8061392390615cf6565b61393083602001516113f8565b101561397b5761394382602001516113f8565b8161394e9190615a46565b856139599190615a46565b945061397682602001513061397185602001516113f8565b61245e565b613994565b6139938260200151308361398e90615cf6565b61245e565b5b5b50508080600101915050613871565b505092915050565b82600281019282156139db579160200282015b828111156139da5782358255916020019190600101906139bf565b5b5090506139e891906139ec565b5090565b5b80821115613a055760008160009055506001016139ed565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a43578082015181840152602081019050613a28565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6b82613a09565b613a758185613a14565b9350613a85818560208601613a25565b613a8e81613a4f565b840191505092915050565b60006020820190508181036000830152613ab38184613a60565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613afa82613acf565b9050919050565b613b0a81613aef565b8114613b1557600080fd5b50565b600081359050613b2781613b01565b92915050565b6000819050919050565b613b4081613b2d565b8114613b4b57600080fd5b50565b600081359050613b5d81613b37565b92915050565b60008060408385031215613b7a57613b79613ac5565b5b6000613b8885828601613b18565b9250506020613b9985828601613b4e565b9150509250929050565b60008115159050919050565b613bb881613ba3565b82525050565b6000602082019050613bd36000830184613baf565b92915050565b613be281613b2d565b82525050565b6000602082019050613bfd6000830184613bd9565b92915050565b600060208284031215613c1957613c18613ac5565b5b6000613c2784828501613b4e565b91505092915050565b600080600060608486031215613c4957613c48613ac5565b5b6000613c5786828701613b18565b9350506020613c6886828701613b18565b9250506040613c7986828701613b4e565b9150509250925092565b613c8c81613ba3565b8114613c9757600080fd5b50565b600081359050613ca981613c83565b92915050565b600080600060608486031215613cc857613cc7613ac5565b5b6000613cd686828701613b4e565b9350506020613ce786828701613b4e565b9250506040613cf886828701613c9a565b9150509250925092565b600060ff82169050919050565b613d1881613d02565b82525050565b6000602082019050613d336000830184613d0f565b92915050565b613d4281613aef565b82525050565b6000602082019050613d5d6000830184613d39565b92915050565b600060208284031215613d7957613d78613ac5565b5b6000613d8784828501613b18565b91505092915050565b600080600060608486031215613da957613da8613ac5565b5b6000613db786828701613b18565b9350506020613dc886828701613b4e565b9250506040613dd986828701613b4e565b9150509250925092565b60008060008060808587031215613dfd57613dfc613ac5565b5b6000613e0b87828801613b4e565b9450506020613e1c87828801613b18565b9350506040613e2d87828801613b4e565b9250506060613e3e87828801613c9a565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613e6f57613e6e613e4a565b5b8235905067ffffffffffffffff811115613e8c57613e8b613e4f565b5b602083019150836001820283011115613ea857613ea7613e54565b5b9250929050565b600081905082602060020282011115613ecb57613eca613e54565b5b92915050565b60008083601f840112613ee757613ee6613e4a565b5b8235905067ffffffffffffffff811115613f0457613f03613e4f565b5b602083019150836001820283011115613f2057613f1f613e54565b5b9250929050565b6000806000806000806000806000806101408b8d031215613f4b57613f4a613ac5565b5b60008b013567ffffffffffffffff811115613f6957613f68613aca565b5b613f758d828e01613e59565b9a509a50506020613f888d828e01613b4e565b9850506040613f998d828e01613eaf565b9750506080613faa8d828e01613eaf565b96505060c0613fbb8d828e01613b4e565b95505060e0613fcc8d828e01613c9a565b945050610100613fde8d828e01613c9a565b9350506101208b013567ffffffffffffffff81111561400057613fff613aca565b5b61400c8d828e01613ed1565b92509250509295989b9194979a5092959850565b61402981613b2d565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061405b8383614020565b60208301905092915050565b6000602082019050919050565b61407d8161402f565b614087818461403a565b925061409282614045565b8060005b838110156140c35781516140aa878261404f565b96506140b583614067565b925050600181019050614096565b505050505050565b6140d481613ba3565b82525050565b60e0820160008201516140f06000850182614020565b5060208201516141036020850182614074565b5060408201516141166060850182614074565b50606082015161412960a0850182614020565b50608082015161413c60c08501826140cb565b50505050565b600081519050919050565b600082825260208201905092915050565b600061416982614142565b614173818561414d565b9350614183818560208601613a25565b61418c81613a4f565b840191505092915050565b6000610240820190506141ad600083018f613bd9565b81810360208301526141bf818e613a60565b90506141ce604083018d613d39565b6141db606083018c613bd9565b6141e8608083018b613bd9565b6141f560a083018a6140da565b614203610180830189613bd9565b6142116101a0830188613bd9565b61421f6101c0830187613baf565b61422d6101e0830186613baf565b61423b610200830185613baf565b81810361022083015261424e818461415e565b90509d9c50505050505050505050505050565b6000806020838503121561427857614277613ac5565b5b600083013567ffffffffffffffff81111561429657614295613aca565b5b6142a285828601613e59565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142e381613aef565b82525050565b6040820160008201516142ff6000850182614020565b50602082015161431260208501826142da565b50505050565b600061432483836142e9565b60408301905092915050565b6000602082019050919050565b6000614348826142ae565b61435281856142b9565b935061435d836142ca565b8060005b8381101561438e5781516143758882614318565b975061438083614330565b925050600181019050614361565b5085935050505092915050565b600060208201905081810360008301526143b5818461433d565b905092915050565b600080604083850312156143d4576143d3613ac5565b5b60006143e285828601613b18565b92505060206143f385828601613b18565b9150509250929050565b60008083601f84011261441357614412613e4a565b5b8235905067ffffffffffffffff8111156144305761442f613e4f565b5b60208301915083604082028301111561444c5761444b613e54565b5b9250929050565b60008083601f84011261446957614468613e4a565b5b8235905067ffffffffffffffff81111561448657614485613e4f565b5b6020830191508360208202830111156144a2576144a1613e54565b5b9250929050565b600080600080600080606087890312156144c6576144c5613ac5565b5b600087013567ffffffffffffffff8111156144e4576144e3613aca565b5b6144f089828a016143fd565b9650965050602087013567ffffffffffffffff81111561451357614512613aca565b5b61451f89828a01613e59565b9450945050604087013567ffffffffffffffff81111561454257614541613aca565b5b61454e89828a01614453565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61459a82613a4f565b810181811067ffffffffffffffff821117156145b9576145b8614562565b5b80604052505050565b60006145cc613abb565b90506145d88282614591565b919050565b600067ffffffffffffffff8211156145f8576145f7614562565b5b61460182613a4f565b9050602081019050919050565b82818337600083830152505050565b600061463061462b846145dd565b6145c2565b90508281526020810184848401111561464c5761464b61455d565b5b61465784828561460e565b509392505050565b600082601f83011261467457614673613e4a565b5b813561468484826020860161461d565b91505092915050565b6000602082840312156146a3576146a2613ac5565b5b600082013567ffffffffffffffff8111156146c1576146c0613aca565b5b6146cd8482850161465f565b91505092915050565b600060608201905081810360008301526146f08186613a60565b90506146ff6020830185613d39565b61470c6040830184613bd9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061475b57607f821691505b60208210810361476e5761476d614714565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546147a181614743565b6147ab8186614774565b945060018216600081146147c657600181146147db5761480e565b60ff198316865281151582028601935061480e565b6147e48561477f565b60005b83811015614806578154818901526001820191506020810190506147e7565b838801955050505b50505092915050565b60006148238284614794565b915081905092915050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614864601883613a14565b915061486f8261482e565b602082019050919050565b6000602082019050818103600083015261489381614857565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148d482613b2d565b91506148df83613b2d565b92508282019050808211156148f7576148f661489a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061493782613b2d565b915061494283613b2d565b925082614952576149516148fd565b5b828204905092915050565b600061496882613b2d565b915061497383613b2d565b925082614983576149826148fd565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149ea602183613a14565b91506149f58261498e565b604082019050919050565b60006020820190508181036000830152614a19816149dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a5a82613b2d565b9150614a6583613b2d565b9250828202614a7381613b2d565b91508282048414831517614a8a57614a8961489a565b5b5092915050565b6000606082019050614aa66000830186613bd9565b614ab36020830185613baf565b614ac06040830184613baf565b949350505050565b60008190508160005260206000209050919050565b60008154614aea81614743565b614af4818661414d565b94506001821660008114614b0f5760018114614b2557614b58565b60ff198316865281151560200286019350614b58565b614b2e85614ac8565b60005b83811015614b5057815481890152600182019150602081019050614b31565b808801955050505b50505092915050565b600060a082019050614b766000830188613baf565b614b836020830187613baf565b614b906040830186613bd9565b614b9d6060830185613bd9565b8181036080830152614baf8184614add565b90509695505050505050565b600081519050614bca81613b37565b92915050565b600060208284031215614be657614be5613ac5565b5b6000614bf484828501614bbb565b91505092915050565b6000614c0882613b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c3a57614c3961489a565b5b600182019050919050565b6000614c5082613b2d565b9150614c5b83613b2d565b9250828203905081811115614c7357614c7261489a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614caf601b83613a14565b9150614cba82614c79565b602082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b6000606082019050614cfa6000830186613d39565b614d076020830185613bd9565b614d146040830184613bd9565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d78602b83613a14565b9150614d8382614d1c565b604082019050919050565b60006020820190508181036000830152614da781614d6b565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614de4601583613a14565b9150614def82614dae565b602082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e50601483613a14565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614ebc601783613a14565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f28601a83613a14565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f94601d83613a14565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615000601e83613a14565b915061500b82614fca565b602082019050919050565b6000602082019050818103600083015261502f81614ff3565b9050919050565b60006150428385614774565b935061504f83858461460e565b82840190509392505050565b6000615068828486615036565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006150aa601583613a14565b91506150b582615074565b602082019050919050565b600060208201905081810360008301526150d98161509d565b9050919050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150fb565b61514286836150fb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061517f61517a61517584613b2d565b61515a565b613b2d565b9050919050565b6000819050919050565b61519983615164565b6151ad6151a582615186565b848454615108565b825550505050565b600090565b6151c26151b5565b6151cd818484615190565b505050565b5b818110156151f1576151e66000826151ba565b6001810190506151d3565b5050565b601f821115615236576152078161477f565b615210846150eb565b8101602085101561521f578190505b61523361522b856150eb565b8301826151d2565b50505b505050565b600082821c905092915050565b60006152596000198460080261523b565b1980831691505092915050565b60006152728383615248565b9150826002028217905092915050565b61528c83836150e0565b67ffffffffffffffff8111156152a5576152a4614562565b5b6152af8254614743565b6152ba8282856151f5565b6000601f8311600181146152e957600084156152d7578287013590505b6152e18582615266565b865550615349565b601f1984166152f78661477f565b60005b8281101561531f578489013582556001820191506020850194506020810190506152fa565b8683101561533c5784890135615338601f891682615248565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561539e5761536f81614ac8565b615378846150eb565b81016020851015615387578190505b61539b615393856150eb565b8301826151d2565b50505b505050565b6153ad8383615352565b67ffffffffffffffff8111156153c6576153c5614562565b5b6153d08254614743565b6153db82828561535d565b6000601f83116001811461540a57600084156153f8578287013590505b6154028582615266565b86555061546a565b601f19841661541886614ac8565b60005b828110156154405784890135825560018201915060208501945060208101905061541b565b8683101561545d5784890135615459601f891682615248565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602583613a14565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615561602983613a14565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b600081356155a481613b37565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6155e6846155ad565b9350801983169250808416831791505092915050565b61560582615164565b61561861561182615186565b83546155ba565b8255505050565b6000813561562c81613b01565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615655846155ad565b9350801983169250808416831791505092915050565b600061568661568161567c84613acf565b61515a565b613acf565b9050919050565b60006156988261566b565b9050919050565b60006156aa8261568d565b9050919050565b6000819050919050565b6156c48261569f565b6156d76156d0826156b1565b8354615635565b8255505050565b6000810160008301806156f081615597565b90506156fc81846155fc565b5050506001810160208301806157118161561f565b905061571d81846156bb565b5050505050565b61572e82826156de565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615768601f83613a14565b915061577382615732565b602082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157c9576157c861579e565b5b80830191505092915050565b6000819050919050565b6157e8816157d5565b81146157f357600080fd5b50565b60008135615803816157df565b80915050919050565b600061582761582261581d846157d5565b61515a565b6157d5565b9050919050565b6000819050919050565b6158418261580c565b61585461584d8261582e565b83546155ba565b8255505050565b600080833560016020038436030381126158785761587761579e565b5b80840192508235915067ffffffffffffffff82111561589a576158996157a3565b5b6020830192506001820236038313156158b6576158b56157a8565b5b509250929050565b6158c9838383615282565b505050565b6000810160008301806158e0816157f6565b90506158ec8184615838565b5050506001810160208301615901818561585b565b61590c8183866158be565b505050505050565b61591e82826158ce565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b600061597e602483613a14565b915061598982615922565b604082019050919050565b600060208201905081810360008301526159ad81615971565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a10602383613a14565b9150615a1b826159b4565b604082019050919050565b60006020820190508181036000830152615a3f81615a03565b9050919050565b6000615a51826157d5565b9150615a5c836157d5565b925082820190508281121560008312168382126000841215161715615a8457615a8361489a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615ae6602883613a14565b9150615af182615a8a565b604082019050919050565b60006020820190508181036000830152615b1581615ad9565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615b78602983613a14565b9150615b8382615b1c565b604082019050919050565b60006020820190508181036000830152615ba781615b6b565b9050919050565b6000615bba8385613a14565b9350615bc783858461460e565b615bd083613a4f565b840190509392505050565b60006020820190508181036000830152615bf6818486615bae565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c35601883613a14565b9150615c4082615bff565b602082019050919050565b60006020820190508181036000830152615c6481615c28565b9050919050565b6000615c7682613a09565b615c808185614774565b9350615c90818560208601613a25565b80840191505092915050565b6000615ca88284615c6b565b915081905092915050565b6000615cbe826157d5565b9150615cc9836157d5565b9250828203905081811260008412168282136000851215161715615cf057615cef61489a565b5b92915050565b6000615d01826157d5565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d3357615d3261489a565b5b816000039050919050565b6000615d49826157d5565b9150615d54836157d5565b9250828202615d62816157d5565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615d9a57615d9961489a565b5b8282058414831517615daf57615dae61489a565b5b5092915050565b6000615dc1826157d5565b9150615dcc836157d5565b925082615ddc57615ddb6148fd565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e1557615e1461489a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615e7c602683613a14565b9150615e8782615e20565b604082019050919050565b60006020820190508181036000830152615eab81615e6f565b905091905056fea2646970667358221220c308521dc849f12cca79264e32371da691dbeb8c7ce78eb9e19c75a38fa6949964736f6c63430008180033",
"deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613a99565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613b63565b6106e0565b6040516101af9190613bbe565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613be8565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613be8565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613c03565b61070f565b6040516102429190613bbe565b60405180910390f35b34801561025757600080fd5b5061026061129a565b60405161026d9190613be8565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613c30565b6112a4565b6040516102aa9190613bbe565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613caf565b6112e1565b005b3480156102e857600080fd5b506102f161130a565b6040516102fe9190613d1e565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613c03565b611313565b60405161033b9190613a99565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613c03565b6113bf565b6040516103789190613d48565b60405180910390f35b34801561038d57600080fd5b506103966113f2565b6040516103a39190613be8565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613d63565b6113f8565b6040516103e09190613be8565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613d90565b611440565b60405161041d9190613bbe565b60405180910390f35b34801561043257600080fd5b5061043b6114c7565b6040516104489190613a99565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613de3565b611559565b005b610494600480360381019061048f9190613f27565b61158e565b6040516104a19190613be8565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613d63565b611a48565b6040516104de9190613bbe565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613c03565b611a68565b6040516105269c9b9a99989796959493929190614197565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613b63565b611ce2565b6040516105639190613bbe565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614261565b611d1f565b6040516105a0919061439b565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb91906143bd565b611e08565b6040516105dd9190613be8565b60405180910390f35b3480156105f257600080fd5b5061060d600480360381019061060891906144a9565b611e8f565b005b34801561061b57600080fd5b506106366004803603810190610631919061468d565b61235c565b604051610645939291906146d6565b60405180910390f35b60606003805461065d90614743565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614743565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb612444565b90506106f881858561244c565b600191505092915050565b600d5481565b60075481565b600080600a60008481526020019081526020016000209050600060058260010160405161073c9190614817565b908152602001604051809103902090506000151582600f0160009054906101000a900460ff161515146107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b9061487a565b60405180910390fd5b600080600080600090505b85600501548110156108205785600401600082815260200190815260200160002091508160010160009054906101000a900460ff1615610800578160020154846107f991906148c9565b9350610813565b81600201548361081091906148c9565b92505b80806001019150506107af565b5060028560030154610832919061492c565b8361083d91906148c9565b925060028560030154610850919061492c565b8261085b91906148c9565b9150600060028660030154610870919061495d565b146108855760018361088291906148c9565b92505b84600e01544211806108a8575061089a61129a565b82846108a691906148c9565b145b6108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90614a00565b60405180910390fd5b8460060160010160006002811061090157610900614a20565b5b015461090b61129a565b6109159190614a4f565b828461092191906148c9565b8660060160010160016002811061093b5761093a614a20565b5b01546109479190614a4f565b11610a7857600185600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818760008060405161099d93929190614a91565b60405180910390a184600f0160029054906101000a900460ff1615610a6a578460020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d587600086868a6010016040518663ffffffff1660e01b8152600401610a25959493929190614b61565b6020604051808303816000875af1158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190614bd0565b505b600095505050505050611295565b84600601600301600060028110610a9257610a91614a20565b5b01548284610aa091906148c9565b610aaa9190614a4f565b85600601600301600160028110610ac457610ac3614a20565b5b015484610ad19190614a4f565b101595508515610c5b5760005b8460020180549050811015610c59576000856002018281548110610b0557610b04614a20565b5b906000526020600020906002020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c4b5780600c6000600d6000815480929190610ba290614bfd565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050610ade565b505b600185600f0160006101000a81548160ff0219169083151502179055508585600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8187876001604051610cc893929190614a91565b60405180910390a1600086610cdd5782610cdf565b835b905060008060005b8860050154811015610de75788600401600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151514610dda57600060648a600601600501548760020154610d419190614a4f565b610d4b919061492c565b90508960060160060160009054906101000a900460ff1615610da957610d968660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308361245e565b8084610da291906148c9565b9350610dd8565b610dd78660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612683565b5b505b8080600101915050610ce7565b508815610fe55760028860030154610dff919061492c565b82610e0a91906148c9565b915060005b8860050154811015610ef55788600401600082815260200190815260200160002094508860060160060160009054906101000a900460ff168015610e6757508460010160009054906101000a900460ff1615158a1515145b15610ee857600060648a6006016005015486886002015487610e899190614a4f565b610e93919061492c565b610e9d9190614a4f565b610ea7919061492c565b90508083610eb591906148c9565b9250610ee6308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361245e565b505b8080600101915050610e0f565b5060008183610f049190614c45565b9050600060028a60030154610f19919061495d565b14610f2e57600181610f2b91906148c9565b90505b610fdf896001018054610f4090614743565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6c90614743565b8015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b50505050508260028c60030154610fd0919061492c565b610fda91906148c9565b612705565b506110fd565b876003015482610ff591906148c9565b915060005b88600501548110156110fb5788600401600082815260200190815260200160002094508860060160060160009054906101000a900460ff16801561105257508460010160009054906101000a900460ff1615158a1515145b156110ee57600060648a6006016005015460028c60030154611074919061492c565b8761107f9190614c45565b88600201548761108f9190614a4f565b611099919061492c565b6110a39190614a4f565b6110ad919061492c565b905080836110bb91906148c9565b92506110ec308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361245e565b505b8080600101915050610ffa565b505b60005b600d548110156111c6576000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061114c61129a565b611155836113f8565b8c600d01546111649190614a4f565b61116e919061492c565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111b6573d6000803e3d6000fd5b5050508080600101915050611100565b5087600f0160029054906101000a900460ff161561128c578760020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58a600189898d6010016040518663ffffffff1660e01b8152600401611247959493929190614b61565b6020604051808303816000875af1158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190614bd0565b505b50505050505050505b919050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890614cc5565b60405180910390fd5b6000600a6000858152602001908152602001600020905061130481338585612717565b50505050565b60006009905090565b6006818154811061132357600080fd5b90600052602060002001600091509050805461133e90614743565b80601f016020809104026020016040519081016040528092919081815260200182805461136a90614743565b80156113b75780601f1061138c576101008083540402835291602001916113b7565b820191906000526020600020905b81548152906001019060200180831161139a57829003601f168201915b505050505081565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061144d33858561244c565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161148a93929190614ce5565b600060405180830381600087803b1580156114a457600080fd5b505af11580156114b8573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546114d690614743565b80601f016020809104026020016040519081016040528092919081815260200182805461150290614743565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b6000600a6000868152602001908152602001600020905061157b84338561280d565b61158781858585612717565b5050505050565b60008034116115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614d8e565b60405180910390fd5b6001891015611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90614dfa565b60405180910390fd5b651cae8c13e00089111561165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690614e66565b60405180910390fd5b8760016002811061167357611672614a20565b5b6020020135600f60006002811061168d5761168c614a20565b5b01546116999190614a4f565b886000600281106116ad576116ac614a20565b5b6020020135600f6001600281106116c7576116c6614a20565b5b01546116d39190614a4f565b1015611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90614ed2565b60405180910390fd5b8760016002811061172857611727614a20565b5b60200201358860006002811061174157611740614a20565b5b60200201351115611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90614f3e565b60405180910390fd5b8660016002811061179b5761179a614a20565b5b6020020135876000600281106117b4576117b3614a20565b5b602002013511156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190614faa565b60405180910390fd5b606486111561183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590615016565b60405180910390fd5b600060058c8c60405161185292919061505b565b9081526020016040518091039020905060008160020180549050036118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a3906150c0565b60405180910390fd5b600b60008154809291906118bf90614bfd565b9190505591506000600a60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c826001019182611932929190615282565b503481600d018190555089816006016001019060026119529291906139ac565b5088816006016003019060026119699291906139ac565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426119ad91906148c9565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826119ed9291906153a3565b506119f830346128a1565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a83604051611a309190613be8565b60405180910390a150509a9950505050505050505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a602052806000526040600020600091509050806000015490806001018054611a9190614743565b80601f0160208091040260200160405190810160405280929190818152602001828054611abd90614743565b8015611b0a5780601f10611adf57610100808354040283529160200191611b0a565b820191906000526020600020905b815481529060010190602001808311611aed57829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611b97576020028201915b815481526020019060010190808311611b83575b5050505050815260200160038201600280602002604051908101604052809291908260028015611bdc576020028201915b815481526020019060010190808311611bc8575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611c5f90614743565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8b90614743565b8015611cd85780601f10611cad57610100808354040283529160200191611cd8565b820191906000526020600020905b815481529060010190602001808311611cbb57829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690614cc5565b60405180910390fd5b6060600060058484604051611d3592919061505b565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611dfb5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611d69565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc906154e5565b60405180910390fd5b60076000815480929190611ee890614bfd565b91905055506006848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611f2a929190615282565b50600060058585604051611f3f92919061505b565b908152602001604051809103902090506000816002018054905014611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9090615577565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611fef929190615282565b50600080600090505b8888905081101561208e5788888281811061201657612015614a20565b5b905060400201600001358261202b91906148c9565b91508260020189898381811061204457612043614a20565b5b9050604002019080600181540180825580915050600190039060005260206000209060020201600090919091909150818161207f9190615724565b50508080600101915050611ff8565b50606481146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c99061577e565b60405180910390fd5b60005b8484905081101561214d57826003018585838181106120f7576120f6614a20565b5b905060200281019061210991906157ad565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161213e9190615914565b505080806001019150506120d5565b5060008060005b846003018054905081101561226f57600085600301828154811061217b5761217a614a20565b5b90600052602060002090600202016000015490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c8112156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990615994565b60405180910390fd5b6064811315612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90615a26565b60405180910390fd5b600081131561225257808461224b9190615a46565b9350612261565b808361225e9190615a46565b92505b508080600101915050612154565b5060648213156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90615afc565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c811215612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e90615b8e565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af2497278888604051612348929190615bdb565b60405180910390a150505050505050505050565b60058180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461239590614743565b80601f01602080910402602001604051908101604052809291908181526020018280546123c190614743565b801561240e5780601f106123e35761010080835404028352916020019161240e565b820191906000526020600020905b8154815290600101906020018083116123f157829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6124598383836001612923565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b05780600260008282546124a491906148c9565b92505081905550612583565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561253c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161253393929190614ce5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125cc5780600260008282540392505081905550612619565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126769190613be8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f55760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016126ec9190613d48565b60405180910390fd5b6127018260008361245e565b5050565b6127128282600080612afa565b505050565b83600e015442111561275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590615c4b565b60405180910390fd5b600084600501600081548092919061277590614bfd565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006128198484611e08565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461289b578181101561288b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161288293929190614ce5565b60405180910390fd5b61289a84848484036000612923565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129135760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161290a9190613d48565b60405180910390fd5b61291f6000838361245e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129955760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161298c9190613d48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a075760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016129fe9190613d48565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612af4578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612aeb9190613be8565b60405180910390a35b50505050565b60006009548210612b0d5783905061369a565b6000600586604051612b1f9190615c9c565b908152602001604051809103902090506000816002018054905003612b47578491505061369a565b60005b8160030180549050811015612c7b576000826003018281548110612b7157612b70614a20565b5b9060005260206000209060020201600001541215612c6e57612c6087836003018381548110612ba357612ba2614a20565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612bd690614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0290614743565b8015612c4f5780601f10612c2457610100808354040283529160200191612c4f565b820191906000526020600020905b815481529060010190602001808311612c3257829003601f168201915b5050505050815250508888886136a2565b86612c6b9190615cb3565b95505b8080600101915050612b4a565b5060005b8160030180549050811015612db0576000826003018281548110612ca657612ca5614a20565b5b9060005260206000209060020201600001541315612da357612d9587836003018381548110612cd857612cd7614a20565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612d0b90614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3790614743565b8015612d845780601f10612d5957610100808354040283529160200191612d84565b820191906000526020600020905b815481529060010190602001808311612d6757829003601f168201915b5050505050815250508888886136a2565b86612da09190615cb3565b95505b8080600101915050612c7f565b50600085131561309c5761307b816040518060a0016040529081600082018054612dd990614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0590614743565b8015612e525780601f10612e2757610100808354040283529160200191612e52565b820191906000526020600020905b815481529060010190602001808311612e3557829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612f685783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612ed6565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015613063578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612fd290614743565b80601f0160208091040260200160405190810160405280929190818152602001828054612ffe90614743565b801561304b5780601f106130205761010080835404028352916020019161304b565b820191906000526020600020905b81548152906001019060200180831161302e57829003601f168201915b50505050508152505081526020019060010190612f95565b5050505081526020016004820154815250508661386b565b508481600401600082825461309091906148c9565b92505081905550613698565b60008582600401546130ae9190615a46565b1261339f57613374816040518060a00160405290816000820180546130d290614743565b80601f01602080910402602001604051908101604052809291908181526020018280546130fe90614743565b801561314b5780601f106131205761010080835404028352916020019161314b565b820191906000526020600020905b81548152906001019060200180831161312e57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156132615783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906131cf565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561335c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546132cb90614743565b80601f01602080910402602001604051908101604052809291908181526020018280546132f790614743565b80156133445780601f1061331957610100808354040283529160200191613344565b820191906000526020600020905b81548152906001019060200180831161332757829003601f168201915b5050505050815250508152602001906001019061328e565b5050505081526020016004820154815250508661386b565b91508461338090615cf6565b8160040160008282546133939190614c45565b92505081905550613697565b8481600401546133af9190615a46565b915061367f816040518060a00160405290816000820180546133d090614743565b80601f01602080910402602001604051908101604052809291908181526020018280546133fc90614743565b80156134495780601f1061341e57610100808354040283529160200191613449565b820191906000526020600020905b81548152906001019060200180831161342c57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561355f5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906134cd565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561365a5783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546135c990614743565b80601f01602080910402602001604051908101604052809291908181526020018280546135f590614743565b80156136425780601f1061361757610100808354040283529160200191613642565b820191906000526020600020905b81548152906001019060200180831161362557829003601f168201915b5050505050815250508152602001906001019061358c565b505050508152602001600482015481525050826004015461367a90615cf6565b61386b565b8261368a9190615a46565b9150600081600401819055505b5b505b949350505050565b600060648560000151856136b69190615d3e565b6136c09190615db6565b9050600085602001515103613722576000811215613713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370a90615e92565b60405180910390fd5b61371d3082612683565b613862565b60006008876040516137349190615c9c565b908152602001604051809103902086602001516040516137549190615c9c565b908152602001604051809103902054905083156137c157600082121561379c578061377e90615cf6565b8213613793578061378e90615cf6565b613795565b815b91506137c0565b806137a690615cf6565b82126137bb57806137b690615cf6565b6137bd565b815b91505b5b60006137fa87602001518487806137e857506000871480156137e7575060008a60000151125b5b6001886137f591906148c9565b612afa565b905080836138089190615cb3565b92508260088960405161381b9190615c9c565b9081526020016040518091039020886020015160405161383b9190615c9c565b908152602001604051809103902060008282546138589190615a46565b9250508190555050505b95945050505050565b60008060005b8460400151518110156139a45760008560400151828151811061389757613896614a20565b5b60200260200101519050600060018760400151516138b59190614c45565b8310156138ed5760648260000151876138ce9190615d3e565b6138d89190615db6565b905080846138e69190615a46565b93506138fc565b83866138f99190615cb3565b90505b6000811315613919576139143083602001518361245e565b613995565b8061392390615cf6565b61393083602001516113f8565b101561397b5761394382602001516113f8565b8161394e9190615a46565b856139599190615a46565b945061397682602001513061397185602001516113f8565b61245e565b613994565b6139938260200151308361398e90615cf6565b61245e565b5b5b50508080600101915050613871565b505092915050565b82600281019282156139db579160200282015b828111156139da5782358255916020019190600101906139bf565b5b5090506139e891906139ec565b5090565b5b80821115613a055760008160009055506001016139ed565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a43578082015181840152602081019050613a28565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6b82613a09565b613a758185613a14565b9350613a85818560208601613a25565b613a8e81613a4f565b840191505092915050565b60006020820190508181036000830152613ab38184613a60565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613afa82613acf565b9050919050565b613b0a81613aef565b8114613b1557600080fd5b50565b600081359050613b2781613b01565b92915050565b6000819050919050565b613b4081613b2d565b8114613b4b57600080fd5b50565b600081359050613b5d81613b37565b92915050565b60008060408385031215613b7a57613b79613ac5565b5b6000613b8885828601613b18565b9250506020613b9985828601613b4e565b9150509250929050565b60008115159050919050565b613bb881613ba3565b82525050565b6000602082019050613bd36000830184613baf565b92915050565b613be281613b2d565b82525050565b6000602082019050613bfd6000830184613bd9565b92915050565b600060208284031215613c1957613c18613ac5565b5b6000613c2784828501613b4e565b91505092915050565b600080600060608486031215613c4957613c48613ac5565b5b6000613c5786828701613b18565b9350506020613c6886828701613b18565b9250506040613c7986828701613b4e565b9150509250925092565b613c8c81613ba3565b8114613c9757600080fd5b50565b600081359050613ca981613c83565b92915050565b600080600060608486031215613cc857613cc7613ac5565b5b6000613cd686828701613b4e565b9350506020613ce786828701613b4e565b9250506040613cf886828701613c9a565b9150509250925092565b600060ff82169050919050565b613d1881613d02565b82525050565b6000602082019050613d336000830184613d0f565b92915050565b613d4281613aef565b82525050565b6000602082019050613d5d6000830184613d39565b92915050565b600060208284031215613d7957613d78613ac5565b5b6000613d8784828501613b18565b91505092915050565b600080600060608486031215613da957613da8613ac5565b5b6000613db786828701613b18565b9350506020613dc886828701613b4e565b9250506040613dd986828701613b4e565b9150509250925092565b60008060008060808587031215613dfd57613dfc613ac5565b5b6000613e0b87828801613b4e565b9450506020613e1c87828801613b18565b9350506040613e2d87828801613b4e565b9250506060613e3e87828801613c9a565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613e6f57613e6e613e4a565b5b8235905067ffffffffffffffff811115613e8c57613e8b613e4f565b5b602083019150836001820283011115613ea857613ea7613e54565b5b9250929050565b600081905082602060020282011115613ecb57613eca613e54565b5b92915050565b60008083601f840112613ee757613ee6613e4a565b5b8235905067ffffffffffffffff811115613f0457613f03613e4f565b5b602083019150836001820283011115613f2057613f1f613e54565b5b9250929050565b6000806000806000806000806000806101408b8d031215613f4b57613f4a613ac5565b5b60008b013567ffffffffffffffff811115613f6957613f68613aca565b5b613f758d828e01613e59565b9a509a50506020613f888d828e01613b4e565b9850506040613f998d828e01613eaf565b9750506080613faa8d828e01613eaf565b96505060c0613fbb8d828e01613b4e565b95505060e0613fcc8d828e01613c9a565b945050610100613fde8d828e01613c9a565b9350506101208b013567ffffffffffffffff81111561400057613fff613aca565b5b61400c8d828e01613ed1565b92509250509295989b9194979a5092959850565b61402981613b2d565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061405b8383614020565b60208301905092915050565b6000602082019050919050565b61407d8161402f565b614087818461403a565b925061409282614045565b8060005b838110156140c35781516140aa878261404f565b96506140b583614067565b925050600181019050614096565b505050505050565b6140d481613ba3565b82525050565b60e0820160008201516140f06000850182614020565b5060208201516141036020850182614074565b5060408201516141166060850182614074565b50606082015161412960a0850182614020565b50608082015161413c60c08501826140cb565b50505050565b600081519050919050565b600082825260208201905092915050565b600061416982614142565b614173818561414d565b9350614183818560208601613a25565b61418c81613a4f565b840191505092915050565b6000610240820190506141ad600083018f613bd9565b81810360208301526141bf818e613a60565b90506141ce604083018d613d39565b6141db606083018c613bd9565b6141e8608083018b613bd9565b6141f560a083018a6140da565b614203610180830189613bd9565b6142116101a0830188613bd9565b61421f6101c0830187613baf565b61422d6101e0830186613baf565b61423b610200830185613baf565b81810361022083015261424e818461415e565b90509d9c50505050505050505050505050565b6000806020838503121561427857614277613ac5565b5b600083013567ffffffffffffffff81111561429657614295613aca565b5b6142a285828601613e59565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142e381613aef565b82525050565b6040820160008201516142ff6000850182614020565b50602082015161431260208501826142da565b50505050565b600061432483836142e9565b60408301905092915050565b6000602082019050919050565b6000614348826142ae565b61435281856142b9565b935061435d836142ca565b8060005b8381101561438e5781516143758882614318565b975061438083614330565b925050600181019050614361565b5085935050505092915050565b600060208201905081810360008301526143b5818461433d565b905092915050565b600080604083850312156143d4576143d3613ac5565b5b60006143e285828601613b18565b92505060206143f385828601613b18565b9150509250929050565b60008083601f84011261441357614412613e4a565b5b8235905067ffffffffffffffff8111156144305761442f613e4f565b5b60208301915083604082028301111561444c5761444b613e54565b5b9250929050565b60008083601f84011261446957614468613e4a565b5b8235905067ffffffffffffffff81111561448657614485613e4f565b5b6020830191508360208202830111156144a2576144a1613e54565b5b9250929050565b600080600080600080606087890312156144c6576144c5613ac5565b5b600087013567ffffffffffffffff8111156144e4576144e3613aca565b5b6144f089828a016143fd565b9650965050602087013567ffffffffffffffff81111561451357614512613aca565b5b61451f89828a01613e59565b9450945050604087013567ffffffffffffffff81111561454257614541613aca565b5b61454e89828a01614453565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61459a82613a4f565b810181811067ffffffffffffffff821117156145b9576145b8614562565b5b80604052505050565b60006145cc613abb565b90506145d88282614591565b919050565b600067ffffffffffffffff8211156145f8576145f7614562565b5b61460182613a4f565b9050602081019050919050565b82818337600083830152505050565b600061463061462b846145dd565b6145c2565b90508281526020810184848401111561464c5761464b61455d565b5b61465784828561460e565b509392505050565b600082601f83011261467457614673613e4a565b5b813561468484826020860161461d565b91505092915050565b6000602082840312156146a3576146a2613ac5565b5b600082013567ffffffffffffffff8111156146c1576146c0613aca565b5b6146cd8482850161465f565b91505092915050565b600060608201905081810360008301526146f08186613a60565b90506146ff6020830185613d39565b61470c6040830184613bd9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061475b57607f821691505b60208210810361476e5761476d614714565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546147a181614743565b6147ab8186614774565b945060018216600081146147c657600181146147db5761480e565b60ff198316865281151582028601935061480e565b6147e48561477f565b60005b83811015614806578154818901526001820191506020810190506147e7565b838801955050505b50505092915050565b60006148238284614794565b915081905092915050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614864601883613a14565b915061486f8261482e565b602082019050919050565b6000602082019050818103600083015261489381614857565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148d482613b2d565b91506148df83613b2d565b92508282019050808211156148f7576148f661489a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061493782613b2d565b915061494283613b2d565b925082614952576149516148fd565b5b828204905092915050565b600061496882613b2d565b915061497383613b2d565b925082614983576149826148fd565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149ea602183613a14565b91506149f58261498e565b604082019050919050565b60006020820190508181036000830152614a19816149dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a5a82613b2d565b9150614a6583613b2d565b9250828202614a7381613b2d565b91508282048414831517614a8a57614a8961489a565b5b5092915050565b6000606082019050614aa66000830186613bd9565b614ab36020830185613baf565b614ac06040830184613baf565b949350505050565b60008190508160005260206000209050919050565b60008154614aea81614743565b614af4818661414d565b94506001821660008114614b0f5760018114614b2557614b58565b60ff198316865281151560200286019350614b58565b614b2e85614ac8565b60005b83811015614b5057815481890152600182019150602081019050614b31565b808801955050505b50505092915050565b600060a082019050614b766000830188613baf565b614b836020830187613baf565b614b906040830186613bd9565b614b9d6060830185613bd9565b8181036080830152614baf8184614add565b90509695505050505050565b600081519050614bca81613b37565b92915050565b600060208284031215614be657614be5613ac5565b5b6000614bf484828501614bbb565b91505092915050565b6000614c0882613b2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c3a57614c3961489a565b5b600182019050919050565b6000614c5082613b2d565b9150614c5b83613b2d565b9250828203905081811115614c7357614c7261489a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614caf601b83613a14565b9150614cba82614c79565b602082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b6000606082019050614cfa6000830186613d39565b614d076020830185613bd9565b614d146040830184613bd9565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d78602b83613a14565b9150614d8382614d1c565b604082019050919050565b60006020820190508181036000830152614da781614d6b565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614de4601583613a14565b9150614def82614dae565b602082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e50601483613a14565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614ebc601783613a14565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f28601a83613a14565b9150614f3382614ef2565b602082019050919050565b60006020820190508181036000830152614f5781614f1b565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f94601d83613a14565b9150614f9f82614f5e565b602082019050919050565b60006020820190508181036000830152614fc381614f87565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615000601e83613a14565b915061500b82614fca565b602082019050919050565b6000602082019050818103600083015261502f81614ff3565b9050919050565b60006150428385614774565b935061504f83858461460e565b82840190509392505050565b6000615068828486615036565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b60006150aa601583613a14565b91506150b582615074565b602082019050919050565b600060208201905081810360008301526150d98161509d565b9050919050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150fb565b61514286836150fb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061517f61517a61517584613b2d565b61515a565b613b2d565b9050919050565b6000819050919050565b61519983615164565b6151ad6151a582615186565b848454615108565b825550505050565b600090565b6151c26151b5565b6151cd818484615190565b505050565b5b818110156151f1576151e66000826151ba565b6001810190506151d3565b5050565b601f821115615236576152078161477f565b615210846150eb565b8101602085101561521f578190505b61523361522b856150eb565b8301826151d2565b50505b505050565b600082821c905092915050565b60006152596000198460080261523b565b1980831691505092915050565b60006152728383615248565b9150826002028217905092915050565b61528c83836150e0565b67ffffffffffffffff8111156152a5576152a4614562565b5b6152af8254614743565b6152ba8282856151f5565b6000601f8311600181146152e957600084156152d7578287013590505b6152e18582615266565b865550615349565b601f1984166152f78661477f565b60005b8281101561531f578489013582556001820191506020850194506020810190506152fa565b8683101561533c5784890135615338601f891682615248565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561539e5761536f81614ac8565b615378846150eb565b81016020851015615387578190505b61539b615393856150eb565b8301826151d2565b50505b505050565b6153ad8383615352565b67ffffffffffffffff8111156153c6576153c5614562565b5b6153d08254614743565b6153db82828561535d565b6000601f83116001811461540a57600084156153f8578287013590505b6154028582615266565b86555061546a565b601f19841661541886614ac8565b60005b828110156154405784890135825560018201915060208501945060208101905061541b565b8683101561545d5784890135615459601f891682615248565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602583613a14565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b6000615561602983613a14565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b600081356155a481613b37565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6155e6846155ad565b9350801983169250808416831791505092915050565b61560582615164565b61561861561182615186565b83546155ba565b8255505050565b6000813561562c81613b01565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615655846155ad565b9350801983169250808416831791505092915050565b600061568661568161567c84613acf565b61515a565b613acf565b9050919050565b60006156988261566b565b9050919050565b60006156aa8261568d565b9050919050565b6000819050919050565b6156c48261569f565b6156d76156d0826156b1565b8354615635565b8255505050565b6000810160008301806156f081615597565b90506156fc81846155fc565b5050506001810160208301806157118161561f565b905061571d81846156bb565b5050505050565b61572e82826156de565b5050565b7f417574686f722077656967687473206d7573742073756d20746f203130302500600082015250565b6000615768601f83613a14565b915061577382615732565b602082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126157c9576157c861579e565b5b80830191505092915050565b6000819050919050565b6157e8816157d5565b81146157f357600080fd5b50565b60008135615803816157df565b80915050919050565b600061582761582261581d846157d5565b61515a565b6157d5565b9050919050565b6000819050919050565b6158418261580c565b61585461584d8261582e565b83546155ba565b8255505050565b600080833560016020038436030381126158785761587761579e565b5b80840192508235915067ffffffffffffffff82111561589a576158996157a3565b5b6020830192506001820236038313156158b6576158b56157a8565b5b509250929050565b6158c9838383615282565b505050565b6000810160008301806158e0816157f6565b90506158ec8184615838565b5050506001810160208301615901818561585b565b61590c8183866158be565b505050505050565b61591e82826158ce565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303000000000000000000000000000000000000000000000000000000000602082015250565b600061597e602483613a14565b915061598982615922565b604082019050919050565b600060208201905081810360008301526159ad81615971565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130300000000000000000000000000000000000000000000000000000000000602082015250565b6000615a10602383613a14565b9150615a1b826159b4565b604082019050919050565b60006020820190508181036000830152615a3f81615a03565b9050919050565b6000615a51826157d5565b9150615a5c836157d5565b925082820190508281121560008312168382126000841215161715615a8457615a8361489a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030000000000000000000000000000000000000000000000000602082015250565b6000615ae6602883613a14565b9150615af182615a8a565b604082019050919050565b60006020820190508181036000830152615b1581615ad9565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130300000000000000000000000000000000000000000000000602082015250565b6000615b78602983613a14565b9150615b8382615b1c565b604082019050919050565b60006020820190508181036000830152615ba781615b6b565b9050919050565b6000615bba8385613a14565b9350615bc783858461460e565b615bd083613a4f565b840190509392505050565b60006020820190508181036000830152615bf6818486615bae565b90509392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615c35601883613a14565b9150615c4082615bff565b602082019050919050565b60006020820190508181036000830152615c6481615c28565b9050919050565b6000615c7682613a09565b615c808185614774565b9350615c90818560208601613a25565b80840191505092915050565b6000615ca88284615c6b565b915081905092915050565b6000615cbe826157d5565b9150615cc9836157d5565b9250828203905081811260008412168282136000851215161715615cf057615cef61489a565b5b92915050565b6000615d01826157d5565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d3357615d3261489a565b5b816000039050919050565b6000615d49826157d5565b9150615d54836157d5565b9250828202615d62816157d5565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615d9a57615d9961489a565b5b8282058414831517615daf57615dae61489a565b5b5092915050565b6000615dc1826157d5565b9150615dcc836157d5565b925082615ddc57615ddb6148fd565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e1557615e1461489a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615e7c602683613a14565b9150615e8782615e20565b604082019050919050565b60006020820190508181036000830152615eab81615e6f565b905091905056fea2646970667358221220c308521dc849f12cca79264e32371da691dbeb8c7ce78eb9e19c75a38fa6949964736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}