Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- GovernorAlpha
- Optimization enabled
- true
- Compiler version
- v0.5.16+commit.9c3226ce
- Optimization runs
- 1000000
- EVM Version
- default
- Verified at
- 2025-02-23T15:30:28.710942Z
Constructor Arguments
0x000000000000000000000000370b80dc21f8c2b6d259eb1b3c4a8d56419a5d82000000000000000000000000abccefb00528c9c792ac7c46997f0f6ee5dcdddd
Arg [0] (address) : 0x370b80dc21f8c2b6d259eb1b3c4a8d56419a5d82
Arg [1] (address) : 0xabccefb00528c9c792ac7c46997f0f6ee5dcdddd
contracts/factory/GovernorAlpha.sol
/***Submitted for verification at scan.dbkchain.io on 2025-02-23*/pragma solidity ^0.5.16;pragma experimental ABIEncoderV2;contract GovernorAlpha {/// @notice The name of this contractstring public constant name = "GooDog Governor Alpha";/// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeedfunction quorumVotes() public pure returns (uint) { return 4_000_000_000e18; } // 4% of 100B GD/// @notice The number of votes required in order for a voter to become a proposerfunction proposalThreshold() public pure returns (uint) { return 1_000_000_000e18; } // 1% of 100B GD/// @notice The maximum number of actions that can be included in a proposalfunction proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions/// @notice The delay before voting on a proposal may take place, once proposedfunction votingDelay() public pure returns (uint) { return 1; } // 1 block/// @notice The duration of voting on a proposal, in blocksfunction votingPeriod() public pure returns (uint) { return 604800; } // current 7 days in blocks (assuming 1s blocks)/// @notice The address of the GooDog Protocol TimelockTimelockInterface public timelock;/// @notice The address of the GooDog governance tokenGDInterface public gd;/// @notice The total number of proposalsuint public proposalCount;struct Proposal {/// @notice Unique id for looking up a proposaluint id;/// @notice Creator of the proposaladdress proposer;
Compiler Settings
{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}},"optimizer":{"runs":1000000,"enabled":true},"libraries":{}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"address","name":"timelock_","internalType":"address"},{"type":"address","name":"gd_","internalType":"address"}]},{"type":"event","name":"ProposalCanceled","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ProposalCreated","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":false},{"type":"address","name":"proposer","internalType":"address","indexed":false},{"type":"address[]","name":"targets","internalType":"address[]","indexed":false},{"type":"uint256[]","name":"values","internalType":"uint256[]","indexed":false},{"type":"string[]","name":"signatures","internalType":"string[]","indexed":false},{"type":"bytes[]","name":"calldatas","internalType":"bytes[]","indexed":false},{"type":"uint256","name":"startBlock","internalType":"uint256","indexed":false},{"type":"uint256","name":"endBlock","internalType":"uint256","indexed":false},{"type":"string","name":"description","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"ProposalExecuted","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ProposalQueued","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":false},{"type":"uint256","name":"eta","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"VoteCast","inputs":[{"type":"address","name":"voter","internalType":"address","indexed":false},{"type":"uint256","name":"proposalId","internalType":"uint256","indexed":false},{"type":"bool","name":"support","internalType":"bool","indexed":false},{"type":"uint256","name":"votes","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"BALLOT_TYPEHASH","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"DOMAIN_TYPEHASH","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"cancel","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"castVote","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"},{"type":"bool","name":"support","internalType":"bool"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"castVoteBySig","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"},{"type":"bool","name":"support","internalType":"bool"},{"type":"uint8","name":"v","internalType":"uint8"},{"type":"bytes32","name":"r","internalType":"bytes32"},{"type":"bytes32","name":"s","internalType":"bytes32"}],"constant":false},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"execute","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"contract GDInterface"}],"name":"gd","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address[]","name":"targets","internalType":"address[]"},{"type":"uint256[]","name":"values","internalType":"uint256[]"},{"type":"string[]","name":"signatures","internalType":"string[]"},{"type":"bytes[]","name":"calldatas","internalType":"bytes[]"}],"name":"getActions","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"tuple","name":"","internalType":"struct GovernorAlpha.Receipt","components":[{"type":"bool","name":"hasVoted","internalType":"bool"},{"type":"bool","name":"support","internalType":"bool"},{"type":"uint256","name":"votes","internalType":"uint256"}]}],"name":"getReceipt","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"},{"type":"address","name":"voter","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"latestProposalIds","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proposalCount","inputs":[],"constant":true},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proposalMaxOperations","inputs":[],"constant":true},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"proposalThreshold","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"id","internalType":"uint256"},{"type":"address","name":"proposer","internalType":"address"},{"type":"uint256","name":"eta","internalType":"uint256"},{"type":"uint256","name":"startBlock","internalType":"uint256"},{"type":"uint256","name":"endBlock","internalType":"uint256"},{"type":"uint256","name":"forVotes","internalType":"uint256"},{"type":"uint256","name":"againstVotes","internalType":"uint256"},{"type":"bool","name":"canceled","internalType":"bool"},{"type":"bool","name":"executed","internalType":"bool"}],"name":"proposals","inputs":[{"type":"uint256","name":"","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"propose","inputs":[{"type":"address[]","name":"targets","internalType":"address[]"},{"type":"uint256[]","name":"values","internalType":"uint256[]"},{"type":"string[]","name":"signatures","internalType":"string[]"},{"type":"bytes[]","name":"calldatas","internalType":"bytes[]"},{"type":"string","name":"description","internalType":"string"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"queue","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"quorumVotes","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":"","internalType":"enum GovernorAlpha.ProposalState"}],"name":"state","inputs":[{"type":"uint256","name":"proposalId","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"contract TimelockInterface"}],"name":"timelock","inputs":[],"constant":true},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"votingDelay","inputs":[],"constant":true},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"votingPeriod","inputs":[],"constant":true}]
Contract Creation Code
0x60806040523480156200001157600080fd5b50604051620038d1380380620038d1833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6137dd80620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da35c6641161007f578063deaaa7cc11610059578063deaaa7cc146103d0578063e23a9a52146103e5578063fe0d94c11461041257610175565b8063da35c6641461037b578063da95691a14610390578063ddf0b009146103b057610175565b8063a5e598fc116100b0578063a5e598fc1461032f578063b58131b014610351578063d33219b41461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a61019536600461254e565b610425565b6040516101af9998979695949392919061356a565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af91906132e4565b3480156101e657600080fd5b506101ef610493565b6040516101af9190613393565b34801561020857600080fd5b5061021c6102173660046125a6565b6104cc565b005b34801561022a57600080fd5b506101cd6102393660046123cb565b6104db565b34801561024a57600080fd5b506101cd6104ed565b34801561025f57600080fd5b506101cd610504565b34801561027457600080fd5b5061028861028336600461254e565b610514565b6040516101af9493929190613297565b3480156102a457600080fd5b506101cd6107ec565b3480156102b957600080fd5b506102cd6102c836600461254e565b6107f1565b6040516101af9190613385565b3480156102e657600080fd5b5061021c6102f536600461254e565b6109bc565b34801561030657600080fd5b5061021c6103153660046125d6565b610c80565b34801561032657600080fd5b506101cd610e62565b34801561033b57600080fd5b50610344610e67565b6040516101af9190613377565b34801561035d57600080fd5b506101cd610e83565b34801561037257600080fd5b50610344610e93565b34801561038757600080fd5b506101cd610eaf565b34801561039c57600080fd5b506101cd6103ab3660046123f1565b610eb5565b3480156103bc57600080fd5b5061021c6103cb36600461254e565b6113b8565b3480156103dc57600080fd5b506101cd6116af565b3480156103f157600080fd5b5061040561040036600461256c565b6116bb565b6040516101af91906134b4565b61021c61042036600461254e565b61172c565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b62093a805b90565b6040518060400160405280601581526020017f476f6f446f6720476f7665726e6f7220416c706861000000000000000000000081525081565b6104d7338383611960565b5050565b60046020526000908152604090205481565b6040516104f990613188565b604051809103902081565b6b0cecb8f27f4200f3a000000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610578575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f557602002820191906000526020600020905b8154815260200190600101908083116105e1575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e65760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d25780601f106106a7576101008083540402835291602001916106d2565b820191906000526020600020905b8154815290600101906020018083116106b557829003601f168201915b50505050508152602001906001019061061d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d65760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c25780601f10610797576101008083540402835291602001916107c2565b820191906000526020600020905b8154815290600101906020018083116107a557829003601f168201915b50505050508152602001906001019061070d565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108055750600082115b610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133c4565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108695760029150506109b7565b8060070154431161087e5760009150506109b7565b806008015443116108935760019150506109b7565b80600a015481600901541115806108b457506108ad610504565b8160090154105b156108c35760039150506109b7565b60028101546108d65760049150506109b7565b600b810154610100900460ff16156108f25760079150506109b7565b6002810154600054604080517fc1a287e200000000000000000000000000000000000000000000000000000000815290516109a1939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099c91908101906124fb565b611b9e565b42106109b15760069150506109b7565b60059150505b919050565b60006109c7826107f1565b905060078160078111156109d757fe5b1415610a0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613484565b6000828152600360205260409020610a25610e83565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a5b904390611be4565b6040518363ffffffff1660e01b8152600401610a789291906131b9565b60206040518083038186803b158015610a9057600080fd5b505afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac891908101906124fb565b10610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613424565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c435760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b6e57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610ba357fe5b9060005260206000200154856005018581548110610bbd57fe5b90600052602060002001866006018681548110610bd657fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c05959493929190613256565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b505060019092019150610b2f9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7391906132e4565b60405180910390a1505050565b6000604051610c8e90613188565b60408051918290038220828201909152601582527f476f6f446f6720476f7665726e6f7220416c70686100000000000000000000006020909201919091527f868870df57eaf4e34f600ce14317e3b755c872cf88f3868c45f048b1f37c42a3610cf5611c26565b30604051602001610d0994939291906132f2565b6040516020818303038152906040528051906020012090506000604051610d2f90613193565b604051908190038120610d489189908990602001613327565b60405160208183030381529060405280519060200120905060008282604051602001610d75929190613157565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610db2949392919061334f565b6020604051602081039080840390855afa158015610dd4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613464565b610e57818a8a611960565b505050505050505050565b600a90565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610ebf610e83565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610eed904390611be4565b6040518363ffffffff1660e01b8152600401610f0a92919061319e565b60206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5a91908101906124fb565b11610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613454565b84518651148015610fa3575083518651145b8015610fb0575082518651145b610fe6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613414565b855161101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613444565b611026610e62565b86511115611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133f4565b336000908152600460205260409020548015611111576000611081826107f1565b9050600181600781111561109157fe5b14156110c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613474565b60008160078111156110d757fe5b141561110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133e4565b505b600061111f4361099c6107ec565b9050600061112f8261099c61048b565b6002805460010190559050611142611dd6565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301908051906020019061124c929190611e58565b5060808201518051611268916004840191602090910190611ee2565b5060a08201518051611284916005840191602090910190611f29565b5060c082015180516112a0916006840191602090910190611f82565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516113a0999897969594939291906134c2565b60405180910390a15193505050505b95945050505050565b60046113c3826107f1565b60078111156113ce57fe5b14611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133a4565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148493429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096457600080fd5b905060005b60038301548110156116755761166d8360030182815481106114a757fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114dc57fe5b90600052602060002001548560050184815481106114f657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156115a25780601f10611577576101008083540402835291602001916115a2565b820191906000526020600020905b81548152906001019060200180831161158557829003601f168201915b50505050508660060185815481106115b657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156116625780601f1061163757610100808354040283529160200191611662565b820191906000526020600020905b81548152906001019060200180831161164557829003601f168201915b505050505086611c2a565b600101611489565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7390859084906135f0565b6040516104f990613193565b6116c3611fdb565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6005611737826107f1565b600781111561174257fe5b14611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133b4565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156119245760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106117f657fe5b906000526020600020015484600301848154811061181057fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061184557fe5b906000526020600020015486600501868154811061185f57fe5b9060005260206000200187600601878154811061187857fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118a7959493929190613256565b6000604051808303818588803b1580156118c057600080fd5b505af11580156118d4573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261191b9190810190612519565b506001016117b7565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161195491906132e4565b60405180910390a15050565b600161196b836107f1565b600781111561197657fe5b146119ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613494565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133d4565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611a79918a916004016131b9565b60206040518083038186803b158015611a9157600080fd5b505afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac991908101906124fb565b90508315611ae957611adf836009015482611b9e565b6009840155611afd565b611af783600a015482611b9e565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b8e9088908890889086906131c7565b60405180910390a1505050505050565b600082820183811015611bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613404565b9392505050565b600082821115611c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906134a4565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611c6590889088908890889088906020016131fc565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611c9791906132e4565b60206040518083038186803b158015611caf57600080fd5b505afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ce791908101906124dd565b15611d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613434565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611d7c90889088908890889088906004016131fc565b602060405180830381600087803b158015611d9657600080fd5b505af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dce91908101906124fb565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611ed2579160200282015b82811115611ed257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611e78565b50611ede929150611ffb565b5090565b828054828255906000526020600020908101928215611f1d579160200282015b82811115611f1d578251825591602001919060010190611f02565b50611ede929150612037565b828054828255906000526020600020908101928215611f76579160200282015b82811115611f765782518051611f66918491602090910190612051565b5091602001919060010190611f49565b50611ede9291506120be565b828054828255906000526020600020908101928215611fcf579160200282015b82811115611fcf5782518051611fbf918491602090910190612051565b5091602001919060010190611fa2565b50611ede9291506120e1565b604080516060810182526000808252602082018190529181019190915290565b61049091905b80821115611ede5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612001565b61049091905b80821115611ede576000815560010161203d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061209257805160ff1916838001178555611f1d565b82800160010185558215611f1d5791820182811115611f1d578251825591602001919060010190611f02565b61049091905b80821115611ede5760006120d88282612104565b506001016120c4565b61049091905b80821115611ede5760006120fb8282612104565b506001016120e7565b50805460018160011615610100020316600290046000825580601f1061212a5750612148565b601f0160209004906000526020600020908101906121489190612037565b50565b80356117268161376b565b600082601f83011261216757600080fd5b813561217a61217582613625565b6135fe565b9150818183526020840193506020810190508385602084028201111561219f57600080fd5b60005b838110156121cb57816121b5888261214b565b84525060209283019291909101906001016121a2565b5050505092915050565b600082601f8301126121e657600080fd5b81356121f461217582613625565b81815260209384019390925082018360005b838110156121cb578135860161221c888261232b565b8452506020928301929190910190600101612206565b600082601f83011261224357600080fd5b813561225161217582613625565b81815260209384019390925082018360005b838110156121cb5781358601612279888261232b565b8452506020928301929190910190600101612263565b600082601f8301126122a057600080fd5b81356122ae61217582613625565b915081818352602084019350602081019050838560208402820111156122d357600080fd5b60005b838110156121cb57816122e98882612315565b84525060209283019291909101906001016122d6565b80356117268161377f565b80516117268161377f565b803561172681613788565b805161172681613788565b600082601f83011261233c57600080fd5b813561234a61217582613646565b9150808252602083016020830185838301111561236657600080fd5b612371838284613701565b50505092915050565b600082601f83011261238b57600080fd5b815161239961217582613646565b915080825260208301602083018583830111156123b557600080fd5b61237183828461370d565b803561172681613791565b6000602082840312156123dd57600080fd5b60006123e9848461214b565b949350505050565b600080600080600060a0868803121561240957600080fd5b853567ffffffffffffffff81111561242057600080fd5b61242c88828901612156565b955050602086013567ffffffffffffffff81111561244957600080fd5b6124558882890161228f565b945050604086013567ffffffffffffffff81111561247257600080fd5b61247e88828901612232565b935050606086013567ffffffffffffffff81111561249b57600080fd5b6124a7888289016121d5565b925050608086013567ffffffffffffffff8111156124c457600080fd5b6124d08882890161232b565b9150509295509295909350565b6000602082840312156124ef57600080fd5b60006123e9848461230a565b60006020828403121561250d57600080fd5b60006123e98484612320565b60006020828403121561252b57600080fd5b815167ffffffffffffffff81111561254257600080fd5b6123e98482850161237a565b60006020828403121561256057600080fd5b60006123e98484612315565b6000806040838503121561257f57600080fd5b600061258b8585612315565b925050602061259c8582860161214b565b9150509250929050565b600080604083850312156125b957600080fd5b60006125c58585612315565b925050602061259c858286016122ff565b600080600080600060a086880312156125ee57600080fd5b60006125fa8888612315565b955050602061260b888289016122ff565b945050604061261c888289016123c0565b935050606061262d88828901612315565b92505060806124d088828901612315565b600061264a8383612679565b505060200190565b6000611bdd838361281b565b600061264a8383612801565b612673816136e4565b82525050565b612673816136ab565b600061268d8261369e565b61269781856136a2565b93506126a28361368c565b8060005b838110156126d05781516126ba888261263e565b97506126c58361368c565b9250506001016126a6565b509495945050505050565b60006126e68261369e565b6126f081856136a2565b9350836020820285016127028561368c565b8060005b8581101561273c578484038952815161271f8582612652565b945061272a8361368c565b60209a909a0199925050600101612706565b5091979650505050505050565b60006127548261369e565b61275e81856136a2565b9350836020820285016127708561368c565b8060005b8581101561273c578484038952815161278d8582612652565b94506127988361368c565b60209a909a0199925050600101612774565b60006127b58261369e565b6127bf81856136a2565b93506127ca8361368c565b8060005b838110156126d05781516127e2888261265e565b97506127ed8361368c565b9250506001016127ce565b612673816136b6565b61267381610490565b61267361281682610490565b610490565b60006128268261369e565b61283081856136a2565b935061284081856020860161370d565b61284981613739565b9093019392505050565b60008154600181166000811461287057600181146128b4576128f3565b607f600283041661288181876136a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841681529550506020850192506128f3565b600282046128c281876136a2565b95506128cd85613692565b60005b828110156128ec578154888201526001909101906020016128d0565b8701945050505b505092915050565b612673816136eb565b612673816136f6565b600061291a6044836136a2565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b600061299f6045836136a2565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a246002836109b7565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612a5d6029836136a2565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612abc602d836136a2565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612b1b6059836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612ba06028836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612bff6011836136a2565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612c386043836109b7565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612cbd6027836109b7565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612d1c6044836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612da1602f836136a2565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e006044836136a2565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e85602c836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612ee4603f836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612f43602f836136a2565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000612fa26058836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130276036836136a2565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613086602a836136a2565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b60006130e56015836136a2565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b8051606083019061312284826127f8565b50602082015161313560208501826127f8565b5060408201516131486040850182612801565b50505050565b612673816136de565b600061316282612a17565b915061316e828561280a565b60208201915061317e828461280a565b5060200192915050565b600061172682612c2b565b600061172682612cb0565b604081016131ac828561266a565b611bdd6020830184612801565b604081016131ac8285612679565b608081016131d58287612679565b6131e26020830186612801565b6131ef60408301856127f8565b6113af6060830184612801565b60a0810161320a8288612679565b6132176020830187612801565b8181036040830152613229818661281b565b9050818103606083015261323d818561281b565b905061324c6080830184612801565b9695505050505050565b60a081016132648288612679565b6132716020830187612801565b81810360408301526132838186612853565b9050818103606083015261323d8185612853565b608080825281016132a88187612682565b905081810360208301526132bc81866127aa565b905081810360408301526132d08185612749565b9050818103606083015261324c81846126db565b602081016117268284612801565b608081016133008287612801565b61330d6020830186612801565b61331a6040830185612801565b6113af6060830184612679565b606081016133358286612801565b6133426020830185612801565b6123e960408301846127f8565b6080810161335d8287612801565b61336a602083018661314e565b6131ef6040830185612801565b6020810161172682846128fb565b602081016117268284612904565b60208082528101611bdd818461281b565b602080825281016117268161290d565b6020808252810161172681612992565b6020808252810161172681612a50565b6020808252810161172681612aaf565b6020808252810161172681612b0e565b6020808252810161172681612b93565b6020808252810161172681612bf2565b6020808252810161172681612d0f565b6020808252810161172681612d94565b6020808252810161172681612df3565b6020808252810161172681612e78565b6020808252810161172681612ed7565b6020808252810161172681612f36565b6020808252810161172681612f95565b602080825281016117268161301a565b6020808252810161172681613079565b60208082528101611726816130d8565b606081016117268284613111565b61012081016134d1828c612801565b6134de602083018b61266a565b81810360408301526134f0818a612682565b9050818103606083015261350481896127aa565b905081810360808301526135188188612749565b905081810360a083015261352c81876126db565b905061353b60c0830186612801565b61354860e0830185612801565b81810361010083015261355b818461281b565b9b9a5050505050505050505050565b6101208101613579828c612801565b613586602083018b612679565b613593604083018a612801565b6135a06060830189612801565b6135ad6080830188612801565b6135ba60a0830187612801565b6135c760c0830186612801565b6135d460e08301856127f8565b6135e26101008301846127f8565b9a9950505050505050505050565b604081016131ac8285612801565b60405181810167ffffffffffffffff8111828210171561361d57600080fd5b604052919050565b600067ffffffffffffffff82111561363c57600080fd5b5060209081020190565b600067ffffffffffffffff82111561365d57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611726826136c5565b151590565b806109b781613761565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6000611726825b6000611726826136ab565b6000611726826136bb565b82818337506000910152565b60005b83811015613728578181015183820152602001613710565b838111156131485750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061214857fe5b613774816136ab565b811461214857600080fd5b613774816136b6565b61377481610490565b613774816136de56fea365627a7a723158202521a028cb00d57f276215f66bfcbe7a1512020254fec3efc0cef8d2886562cf6c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000370b80dc21f8c2b6d259eb1b3c4a8d56419a5d82000000000000000000000000abccefb00528c9c792ac7c46997f0f6ee5dcdddd
Deployed ByteCode
0x6080604052600436106101755760003560e01c80634634c61f116100cb578063da35c6641161007f578063deaaa7cc11610059578063deaaa7cc146103d0578063e23a9a52146103e5578063fe0d94c11461041257610175565b8063da35c6641461037b578063da95691a14610390578063ddf0b009146103b057610175565b8063a5e598fc116100b0578063a5e598fc1461032f578063b58131b014610351578063d33219b41461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a61019536600461254e565b610425565b6040516101af9998979695949392919061356a565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af91906132e4565b3480156101e657600080fd5b506101ef610493565b6040516101af9190613393565b34801561020857600080fd5b5061021c6102173660046125a6565b6104cc565b005b34801561022a57600080fd5b506101cd6102393660046123cb565b6104db565b34801561024a57600080fd5b506101cd6104ed565b34801561025f57600080fd5b506101cd610504565b34801561027457600080fd5b5061028861028336600461254e565b610514565b6040516101af9493929190613297565b3480156102a457600080fd5b506101cd6107ec565b3480156102b957600080fd5b506102cd6102c836600461254e565b6107f1565b6040516101af9190613385565b3480156102e657600080fd5b5061021c6102f536600461254e565b6109bc565b34801561030657600080fd5b5061021c6103153660046125d6565b610c80565b34801561032657600080fd5b506101cd610e62565b34801561033b57600080fd5b50610344610e67565b6040516101af9190613377565b34801561035d57600080fd5b506101cd610e83565b34801561037257600080fd5b50610344610e93565b34801561038757600080fd5b506101cd610eaf565b34801561039c57600080fd5b506101cd6103ab3660046123f1565b610eb5565b3480156103bc57600080fd5b5061021c6103cb36600461254e565b6113b8565b3480156103dc57600080fd5b506101cd6116af565b3480156103f157600080fd5b5061040561040036600461256c565b6116bb565b6040516101af91906134b4565b61021c61042036600461254e565b61172c565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b62093a805b90565b6040518060400160405280601581526020017f476f6f446f6720476f7665726e6f7220416c706861000000000000000000000081525081565b6104d7338383611960565b5050565b60046020526000908152604090205481565b6040516104f990613188565b604051809103902081565b6b0cecb8f27f4200f3a000000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610578575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f557602002820191906000526020600020905b8154815260200190600101908083116105e1575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e65760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d25780601f106106a7576101008083540402835291602001916106d2565b820191906000526020600020905b8154815290600101906020018083116106b557829003601f168201915b50505050508152602001906001019061061d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d65760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c25780601f10610797576101008083540402835291602001916107c2565b820191906000526020600020905b8154815290600101906020018083116107a557829003601f168201915b50505050508152602001906001019061070d565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108055750600082115b610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133c4565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108695760029150506109b7565b8060070154431161087e5760009150506109b7565b806008015443116108935760019150506109b7565b80600a015481600901541115806108b457506108ad610504565b8160090154105b156108c35760039150506109b7565b60028101546108d65760049150506109b7565b600b810154610100900460ff16156108f25760079150506109b7565b6002810154600054604080517fc1a287e200000000000000000000000000000000000000000000000000000000815290516109a1939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099c91908101906124fb565b611b9e565b42106109b15760069150506109b7565b60059150505b919050565b60006109c7826107f1565b905060078160078111156109d757fe5b1415610a0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613484565b6000828152600360205260409020610a25610e83565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a5b904390611be4565b6040518363ffffffff1660e01b8152600401610a789291906131b9565b60206040518083038186803b158015610a9057600080fd5b505afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac891908101906124fb565b10610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613424565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c435760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b6e57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610ba357fe5b9060005260206000200154856005018581548110610bbd57fe5b90600052602060002001866006018681548110610bd657fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c05959493929190613256565b600060405180830381600087803b158015610c1f57600080fd5b505af1158015610c33573d6000803e3d6000fd5b505060019092019150610b2f9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7391906132e4565b60405180910390a1505050565b6000604051610c8e90613188565b60408051918290038220828201909152601582527f476f6f446f6720476f7665726e6f7220416c70686100000000000000000000006020909201919091527f868870df57eaf4e34f600ce14317e3b755c872cf88f3868c45f048b1f37c42a3610cf5611c26565b30604051602001610d0994939291906132f2565b6040516020818303038152906040528051906020012090506000604051610d2f90613193565b604051908190038120610d489189908990602001613327565b60405160208183030381529060405280519060200120905060008282604051602001610d75929190613157565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610db2949392919061334f565b6020604051602081039080840390855afa158015610dd4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613464565b610e57818a8a611960565b505050505050505050565b600a90565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610ebf610e83565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610eed904390611be4565b6040518363ffffffff1660e01b8152600401610f0a92919061319e565b60206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5a91908101906124fb565b11610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613454565b84518651148015610fa3575083518651145b8015610fb0575082518651145b610fe6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613414565b855161101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613444565b611026610e62565b86511115611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133f4565b336000908152600460205260409020548015611111576000611081826107f1565b9050600181600781111561109157fe5b14156110c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613474565b60008160078111156110d757fe5b141561110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133e4565b505b600061111f4361099c6107ec565b9050600061112f8261099c61048b565b6002805460010190559050611142611dd6565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301908051906020019061124c929190611e58565b5060808201518051611268916004840191602090910190611ee2565b5060a08201518051611284916005840191602090910190611f29565b5060c082015180516112a0916006840191602090910190611f82565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516113a0999897969594939291906134c2565b60405180910390a15193505050505b95945050505050565b60046113c3826107f1565b60078111156113ce57fe5b14611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133a4565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148493429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096457600080fd5b905060005b60038301548110156116755761166d8360030182815481106114a757fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114dc57fe5b90600052602060002001548560050184815481106114f657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156115a25780601f10611577576101008083540402835291602001916115a2565b820191906000526020600020905b81548152906001019060200180831161158557829003601f168201915b50505050508660060185815481106115b657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156116625780601f1061163757610100808354040283529160200191611662565b820191906000526020600020905b81548152906001019060200180831161164557829003601f168201915b505050505086611c2a565b600101611489565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7390859084906135f0565b6040516104f990613193565b6116c3611fdb565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6005611737826107f1565b600781111561174257fe5b14611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133b4565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156119245760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106117f657fe5b906000526020600020015484600301848154811061181057fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061184557fe5b906000526020600020015486600501868154811061185f57fe5b9060005260206000200187600601878154811061187857fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118a7959493929190613256565b6000604051808303818588803b1580156118c057600080fd5b505af11580156118d4573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261191b9190810190612519565b506001016117b7565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161195491906132e4565b60405180910390a15050565b600161196b836107f1565b600781111561197657fe5b146119ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613494565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906133d4565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611a79918a916004016131b9565b60206040518083038186803b158015611a9157600080fd5b505afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac991908101906124fb565b90508315611ae957611adf836009015482611b9e565b6009840155611afd565b611af783600a015482611b9e565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b8e9088908890889086906131c7565b60405180910390a1505050505050565b600082820183811015611bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613404565b9392505050565b600082821115611c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b906134a4565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611c6590889088908890889088906020016131fc565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611c9791906132e4565b60206040518083038186803b158015611caf57600080fd5b505afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ce791908101906124dd565b15611d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613434565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611d7c90889088908890889088906004016131fc565b602060405180830381600087803b158015611d9657600080fd5b505af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dce91908101906124fb565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611ed2579160200282015b82811115611ed257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611e78565b50611ede929150611ffb565b5090565b828054828255906000526020600020908101928215611f1d579160200282015b82811115611f1d578251825591602001919060010190611f02565b50611ede929150612037565b828054828255906000526020600020908101928215611f76579160200282015b82811115611f765782518051611f66918491602090910190612051565b5091602001919060010190611f49565b50611ede9291506120be565b828054828255906000526020600020908101928215611fcf579160200282015b82811115611fcf5782518051611fbf918491602090910190612051565b5091602001919060010190611fa2565b50611ede9291506120e1565b604080516060810182526000808252602082018190529181019190915290565b61049091905b80821115611ede5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612001565b61049091905b80821115611ede576000815560010161203d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061209257805160ff1916838001178555611f1d565b82800160010185558215611f1d5791820182811115611f1d578251825591602001919060010190611f02565b61049091905b80821115611ede5760006120d88282612104565b506001016120c4565b61049091905b80821115611ede5760006120fb8282612104565b506001016120e7565b50805460018160011615610100020316600290046000825580601f1061212a5750612148565b601f0160209004906000526020600020908101906121489190612037565b50565b80356117268161376b565b600082601f83011261216757600080fd5b813561217a61217582613625565b6135fe565b9150818183526020840193506020810190508385602084028201111561219f57600080fd5b60005b838110156121cb57816121b5888261214b565b84525060209283019291909101906001016121a2565b5050505092915050565b600082601f8301126121e657600080fd5b81356121f461217582613625565b81815260209384019390925082018360005b838110156121cb578135860161221c888261232b565b8452506020928301929190910190600101612206565b600082601f83011261224357600080fd5b813561225161217582613625565b81815260209384019390925082018360005b838110156121cb5781358601612279888261232b565b8452506020928301929190910190600101612263565b600082601f8301126122a057600080fd5b81356122ae61217582613625565b915081818352602084019350602081019050838560208402820111156122d357600080fd5b60005b838110156121cb57816122e98882612315565b84525060209283019291909101906001016122d6565b80356117268161377f565b80516117268161377f565b803561172681613788565b805161172681613788565b600082601f83011261233c57600080fd5b813561234a61217582613646565b9150808252602083016020830185838301111561236657600080fd5b612371838284613701565b50505092915050565b600082601f83011261238b57600080fd5b815161239961217582613646565b915080825260208301602083018583830111156123b557600080fd5b61237183828461370d565b803561172681613791565b6000602082840312156123dd57600080fd5b60006123e9848461214b565b949350505050565b600080600080600060a0868803121561240957600080fd5b853567ffffffffffffffff81111561242057600080fd5b61242c88828901612156565b955050602086013567ffffffffffffffff81111561244957600080fd5b6124558882890161228f565b945050604086013567ffffffffffffffff81111561247257600080fd5b61247e88828901612232565b935050606086013567ffffffffffffffff81111561249b57600080fd5b6124a7888289016121d5565b925050608086013567ffffffffffffffff8111156124c457600080fd5b6124d08882890161232b565b9150509295509295909350565b6000602082840312156124ef57600080fd5b60006123e9848461230a565b60006020828403121561250d57600080fd5b60006123e98484612320565b60006020828403121561252b57600080fd5b815167ffffffffffffffff81111561254257600080fd5b6123e98482850161237a565b60006020828403121561256057600080fd5b60006123e98484612315565b6000806040838503121561257f57600080fd5b600061258b8585612315565b925050602061259c8582860161214b565b9150509250929050565b600080604083850312156125b957600080fd5b60006125c58585612315565b925050602061259c858286016122ff565b600080600080600060a086880312156125ee57600080fd5b60006125fa8888612315565b955050602061260b888289016122ff565b945050604061261c888289016123c0565b935050606061262d88828901612315565b92505060806124d088828901612315565b600061264a8383612679565b505060200190565b6000611bdd838361281b565b600061264a8383612801565b612673816136e4565b82525050565b612673816136ab565b600061268d8261369e565b61269781856136a2565b93506126a28361368c565b8060005b838110156126d05781516126ba888261263e565b97506126c58361368c565b9250506001016126a6565b509495945050505050565b60006126e68261369e565b6126f081856136a2565b9350836020820285016127028561368c565b8060005b8581101561273c578484038952815161271f8582612652565b945061272a8361368c565b60209a909a0199925050600101612706565b5091979650505050505050565b60006127548261369e565b61275e81856136a2565b9350836020820285016127708561368c565b8060005b8581101561273c578484038952815161278d8582612652565b94506127988361368c565b60209a909a0199925050600101612774565b60006127b58261369e565b6127bf81856136a2565b93506127ca8361368c565b8060005b838110156126d05781516127e2888261265e565b97506127ed8361368c565b9250506001016127ce565b612673816136b6565b61267381610490565b61267361281682610490565b610490565b60006128268261369e565b61283081856136a2565b935061284081856020860161370d565b61284981613739565b9093019392505050565b60008154600181166000811461287057600181146128b4576128f3565b607f600283041661288181876136a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841681529550506020850192506128f3565b600282046128c281876136a2565b95506128cd85613692565b60005b828110156128ec578154888201526001909101906020016128d0565b8701945050505b505092915050565b612673816136eb565b612673816136f6565b600061291a6044836136a2565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b600061299f6045836136a2565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a246002836109b7565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612a5d6029836136a2565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612abc602d836136a2565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612b1b6059836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612ba06028836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612bff6011836136a2565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612c386043836109b7565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612cbd6027836109b7565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612d1c6044836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612da1602f836136a2565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e006044836136a2565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e85602c836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612ee4603f836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612f43602f836136a2565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000612fa26058836136a2565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130276036836136a2565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613086602a836136a2565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b60006130e56015836136a2565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b8051606083019061312284826127f8565b50602082015161313560208501826127f8565b5060408201516131486040850182612801565b50505050565b612673816136de565b600061316282612a17565b915061316e828561280a565b60208201915061317e828461280a565b5060200192915050565b600061172682612c2b565b600061172682612cb0565b604081016131ac828561266a565b611bdd6020830184612801565b604081016131ac8285612679565b608081016131d58287612679565b6131e26020830186612801565b6131ef60408301856127f8565b6113af6060830184612801565b60a0810161320a8288612679565b6132176020830187612801565b8181036040830152613229818661281b565b9050818103606083015261323d818561281b565b905061324c6080830184612801565b9695505050505050565b60a081016132648288612679565b6132716020830187612801565b81810360408301526132838186612853565b9050818103606083015261323d8185612853565b608080825281016132a88187612682565b905081810360208301526132bc81866127aa565b905081810360408301526132d08185612749565b9050818103606083015261324c81846126db565b602081016117268284612801565b608081016133008287612801565b61330d6020830186612801565b61331a6040830185612801565b6113af6060830184612679565b606081016133358286612801565b6133426020830185612801565b6123e960408301846127f8565b6080810161335d8287612801565b61336a602083018661314e565b6131ef6040830185612801565b6020810161172682846128fb565b602081016117268284612904565b60208082528101611bdd818461281b565b602080825281016117268161290d565b6020808252810161172681612992565b6020808252810161172681612a50565b6020808252810161172681612aaf565b6020808252810161172681612b0e565b6020808252810161172681612b93565b6020808252810161172681612bf2565b6020808252810161172681612d0f565b6020808252810161172681612d94565b6020808252810161172681612df3565b6020808252810161172681612e78565b6020808252810161172681612ed7565b6020808252810161172681612f36565b6020808252810161172681612f95565b602080825281016117268161301a565b6020808252810161172681613079565b60208082528101611726816130d8565b606081016117268284613111565b61012081016134d1828c612801565b6134de602083018b61266a565b81810360408301526134f0818a612682565b9050818103606083015261350481896127aa565b905081810360808301526135188188612749565b905081810360a083015261352c81876126db565b905061353b60c0830186612801565b61354860e0830185612801565b81810361010083015261355b818461281b565b9b9a5050505050505050505050565b6101208101613579828c612801565b613586602083018b612679565b613593604083018a612801565b6135a06060830189612801565b6135ad6080830188612801565b6135ba60a0830187612801565b6135c760c0830186612801565b6135d460e08301856127f8565b6135e26101008301846127f8565b9a9950505050505050505050565b604081016131ac8285612801565b60405181810167ffffffffffffffff8111828210171561361d57600080fd5b604052919050565b600067ffffffffffffffff82111561363c57600080fd5b5060209081020190565b600067ffffffffffffffff82111561365d57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611726826136c5565b151590565b806109b781613761565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6000611726825b6000611726826136ab565b6000611726826136bb565b82818337506000910152565b60005b83811015613728578181015183820152602001613710565b838111156131485750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061214857fe5b613774816136ab565b811461214857600080fd5b613774816136b6565b61377481610490565b613774816136de56fea365627a7a723158202521a028cb00d57f276215f66bfcbe7a1512020254fec3efc0cef8d2886562cf6c6578706572696d656e74616cf564736f6c63430005100040