60806040523480156200001157600080fd5b506000620000246200024260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600481526020017f4155524100000000000000000000000000000000000000000000000000000000815250600690805190602001906200010f9291906200024a565b506040518060400160405280600481526020017f4155524100000000000000000000000000000000000000000000000000000000815250600590805190602001906200015d9291906200024a565b506012600460006101000a81548160ff021916908360ff1602179055506a52b7d2dcc80cd2e4000000600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200023491906200030b565b60405180910390a362000397565b600033905090565b828054620002589062000332565b90600052602060002090601f0160209004810192826200027c5760008555620002c8565b82601f106200029757805160ff1916838001178555620002c8565b82800160010185558215620002c8579182015b82811115620002c7578251825591602001919060010190620002aa565b5b509050620002d79190620002db565b5090565b5b80821115620002f6576000816000905550600101620002dc565b5090565b620003058162000328565b82525050565b6000602082019050620003226000830184620002fa565b92915050565b6000819050919050565b600060028204905060018216806200034b57607f821691505b6020821081141562000362576200036162000368565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611c9280620003a76000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a9059cbb11610071578063a9059cbb146102f9578063b09f126614610329578063d28d885214610347578063dd62ed3e14610365578063f2fde38b1461039557610116565b8063715018a6146102835780638da5cb5b1461028d57806395d89b41146102ab578063a457c2d7146102c957610116565b8063313ce567116100e9578063313ce567146101b757806332424aa3146101d557806339509351146101f357806342966c681461022357806370a082311461025357610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103b1565b6040516101309190611772565b60405180910390f35b610153600480360381019061014e9190611542565b610443565b6040516101609190611757565b60405180910390f35b610171610461565b60405161017e9190611894565b60405180910390f35b6101a1600480360381019061019c91906114ef565b61046b565b6040516101ae9190611757565b60405180910390f35b6101bf610544565b6040516101cc91906118af565b60405180910390f35b6101dd61055b565b6040516101ea91906118af565b60405180910390f35b61020d60048036038101906102089190611542565b61056e565b60405161021a9190611757565b60405180910390f35b61023d60048036038101906102389190611582565b610621565b60405161024a9190611757565b60405180910390f35b61026d60048036038101906102689190611482565b61063d565b60405161027a9190611894565b60405180910390f35b61028b610686565b005b6102956107d9565b6040516102a2919061173c565b60405180910390f35b6102b3610802565b6040516102c09190611772565b60405180910390f35b6102e360048036038101906102de9190611542565b610894565b6040516102f09190611757565b60405180910390f35b610313600480360381019061030e9190611542565b61097e565b6040516103209190611757565b60405180910390f35b61033161099c565b60405161033e9190611772565b60405180910390f35b61034f610a2a565b60405161035c9190611772565b60405180910390f35b61037f600480360381019061037a91906114af565b610ab8565b60405161038c9190611894565b60405180910390f35b6103af60048036038101906103aa9190611482565b610b3f565b005b6060600680546103c0906119f8565b80601f01602080910402602001604051908101604052809291908181526020018280546103ec906119f8565b80156104395780601f1061040e57610100808354040283529160200191610439565b820191906000526020600020905b81548152906001019060200180831161041c57829003601f168201915b5050505050905090565b6000610457610450610be0565b8484610be8565b6001905092915050565b6000600354905090565b6000610478848484610db3565b61053984610484610be0565b61053485604051806060016040528060228152602001611c3b60229139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104ea610be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105e9092919063ffffffff16565b610be8565b600190509392505050565b6000600460009054906101000a900460ff16905090565b600460009054906101000a900460ff1681565b600061061761057b610be0565b84610612856002600061058c610be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c290919063ffffffff16565b610be8565b6001905092915050565b600061063461062e610be0565b83611120565b60019050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61068e610be0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071290611854565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610811906119f8565b80601f016020809104026020016040519081016040528092919081815260200182805461083d906119f8565b801561088a5780601f1061085f5761010080835404028352916020019161088a565b820191906000526020600020905b81548152906001019060200180831161086d57829003601f168201915b5050505050905090565b60006109746108a1610be0565b8461096f856040518060400160405280601f81526020017f2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f00815250600260006108e8610be0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105e9092919063ffffffff16565b610be8565b6001905092915050565b600061099261098b610be0565b8484610db3565b6001905092915050565b600580546109a9906119f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109d5906119f8565b8015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b505050505081565b60068054610a37906119f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a63906119f8565b8015610ab05780601f10610a8557610100808354040283529160200191610ab0565b820191906000526020600020905b815481529060010190602001808311610a9357829003601f168201915b505050505081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b47610be0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611854565b60405180910390fd5b610bdd816112e1565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611814565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906117d4565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610da69190611894565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a906117f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90611834565b60405180910390fd5b610f1c816040518060400160405280602081526020017f207472616e7366657220616d6f756e7420657863656564732062616c616e6365815250600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105e9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fb181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110519190611894565b60405180910390a3505050565b60008383111582906110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d9190611772565b60405180910390fd5b50600083856110b5919061193c565b9050809150509392505050565b60008082846110d191906118e6565b905083811015611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110d906117b4565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790611874565b60405180910390fd5b611219816040518060400160405280601d81526020017f3a206275726e20616d6f756e7420657863656564732062616c616e6365000000815250600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105e9092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112718160035461140e90919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112d59190611894565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890611794565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061145083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105e565b905092915050565b60008135905061146781611c0c565b92915050565b60008135905061147c81611c23565b92915050565b60006020828403121561149857611497611a88565b5b60006114a684828501611458565b91505092915050565b600080604083850312156114c6576114c5611a88565b5b60006114d485828601611458565b92505060206114e585828601611458565b9150509250929050565b60008060006060848603121561150857611507611a88565b5b600061151686828701611458565b935050602061152786828701611458565b92505060406115388682870161146d565b9150509250925092565b6000806040838503121561155957611558611a88565b5b600061156785828601611458565b92505060206115788582860161146d565b9150509250929050565b60006020828403121561159857611597611a88565b5b60006115a68482850161146d565b91505092915050565b6115b881611970565b82525050565b6115c781611982565b82525050565b60006115d8826118ca565b6115e281856118d5565b93506115f28185602086016119c5565b6115fb81611a8d565b840191505092915050565b60006116136026836118d5565b915061161e82611a9e565b604082019050919050565b6000611636601b836118d5565b915061164182611aed565b602082019050919050565b6000611659601e836118d5565b915061166482611b16565b602082019050919050565b600061167c601f836118d5565b915061168782611b3f565b602082019050919050565b600061169f6020836118d5565b91506116aa82611b68565b602082019050919050565b60006116c2601d836118d5565b91506116cd82611b91565b602082019050919050565b60006116e56020836118d5565b91506116f082611bba565b602082019050919050565b6000611708601a836118d5565b915061171382611be3565b602082019050919050565b611727816119ae565b82525050565b611736816119b8565b82525050565b600060208201905061175160008301846115af565b92915050565b600060208201905061176c60008301846115be565b92915050565b6000602082019050818103600083015261178c81846115cd565b905092915050565b600060208201905081810360008301526117ad81611606565b9050919050565b600060208201905081810360008301526117cd81611629565b9050919050565b600060208201905081810360008301526117ed8161164c565b9050919050565b6000602082019050818103600083015261180d8161166f565b9050919050565b6000602082019050818103600083015261182d81611692565b9050919050565b6000602082019050818103600083015261184d816116b5565b9050919050565b6000602082019050818103600083015261186d816116d8565b9050919050565b6000602082019050818103600083015261188d816116fb565b9050919050565b60006020820190506118a9600083018461171e565b92915050565b60006020820190506118c4600083018461172d565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118f1826119ae565b91506118fc836119ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561193157611930611a2a565b5b828201905092915050565b6000611947826119ae565b9150611952836119ae565b92508282101561196557611964611a2a565b5b828203905092915050565b600061197b8261198e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119e35780820151818401526020810190506119c8565b838111156119f2576000848401525b50505050565b60006002820490506001821680611a1057607f821691505b60208210811415611a2457611a23611a59565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f3a20617070726f76656520746f20746865207a65726f20616464726573730000600082015250565b7f207472616e736665722066726f6d20746865207a65726f206164647265737300600082015250565b7f3a20617070726f76652066726f6d6d20746865207a65726f2061646472657373600082015250565b7f207472616e7366657220746f20746865207a65726f2061646472657373000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6275726e2066726f6d20746865207a65726f2061646472657373000000000000600082015250565b611c1581611970565b8114611c2057600080fd5b50565b611c2c816119ae565b8114611c3757600080fd5b5056fe207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205a1fc8582e0095f4752701140d5e00028d46c65e9f5db2982ab469b89dfe5fc764736f6c63430008070033