60806040523480156200001157600080fd5b506040518060400160405280600881526020017f4d656d65636f696e000000000000000000000000000000000000000000000000815250600490805190602001906200005f92919062000348565b506040518060400160405280600481526020017f4d454d450000000000000000000000000000000000000000000000000000000081525060059080519060200190620000ad92919062000348565b506012600660006101000a81548160ff021916908360ff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000128336bdef376571332906a880000006200014860201b60201c565b60008060146101000a81548160ff02191690831515021790555062000616565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b29062000479565b60405180910390fd5b620001d781600354620002e560201b62000ad21790919060201c565b6003819055506200023681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002e560201b62000ad21790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002d991906200049b565b60405180910390a35050565b6000808284620002f69190620004c9565b9050838110156200033e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003359062000457565b60405180910390fd5b8091505092915050565b828054620003569062000530565b90600052602060002090601f0160209004810192826200037a5760008555620003c6565b82601f106200039557805160ff1916838001178555620003c6565b82800160010185558215620003c6579182015b82811115620003c5578251825591602001919060010190620003a8565b5b509050620003d59190620003d9565b5090565b5b80821115620003f4576000816000905550600101620003da565b5090565b600062000407601b83620004b8565b91506200041482620005c4565b602082019050919050565b60006200042e601f83620004b8565b91506200043b82620005ed565b602082019050919050565b620004518162000526565b82525050565b600060208201905081810360008301526200047281620003f8565b9050919050565b6000602082019050818103600083015262000494816200041f565b9050919050565b6000602082019050620004b2600083018462000446565b92915050565b600082825260208201905092915050565b6000620004d68262000526565b9150620004e38362000526565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200051b576200051a62000566565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200054957607f821691505b6020821081141562000560576200055f62000595565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611a5d80620006266000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb146102b3578063b33712c5146102e3578063dd62ed3e146102ed578063e8b5b7961461031d57610100565b806370a08231146102175780638da5cb5b1461024757806395d89b4114610265578063a457c2d71461028357610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf578063439766ce146101ef5780635c975abb146101f957610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610339565b60405161011a91906114a4565b60405180910390f35b61013d6004803603810190610138919061127e565b6103cb565b60405161014a9190611489565b60405180910390f35b61015b6103e2565b60405161016891906115e6565b60405180910390f35b61018b6004803603810190610186919061122b565b6103ec565b6040516101989190611489565b60405180910390f35b6101a96104e5565b6040516101b69190611601565b60405180910390f35b6101d960048036038101906101d4919061127e565b6104fc565b6040516101e69190611489565b60405180910390f35b6101f76105e9565b005b610201610681565b60405161020e9190611489565b60405180910390f35b610231600480360381019061022c91906111be565b610697565b60405161023e91906115e6565b60405180910390f35b61024f6106e0565b60405161025c919061146e565b60405180910390f35b61026d610704565b60405161027a91906114a4565b60405180910390f35b61029d6004803603810190610298919061127e565b610796565b6040516102aa9190611489565b60405180910390f35b6102cd60048036038101906102c8919061127e565b610883565b6040516102da9190611489565b60405180910390f35b6102eb6108e2565b005b610307600480360381019061030291906111eb565b61097a565b60405161031491906115e6565b60405180910390f35b610337600480360381019061033291906111be565b610a01565b005b6060600480546103489061174a565b80601f01602080910402602001604051908101604052809291908181526020018280546103749061174a565b80156103c15780601f10610396576101008083540402835291602001916103c1565b820191906000526020600020905b8154815290600101906020018083116103a457829003601f168201915b5050505050905090565b60006103d8338484610b30565b6001905092915050565b6000600354905090565b60006103f6610681565b15610436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042d90611586565b60405180910390fd5b610441848484610d43565b6104da84336104d585600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fff90919063ffffffff16565b610b30565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6000610506610681565b15610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611586565b60405180910390fd5b6105df33846105da85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ad290919063ffffffff16565b610b30565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066e90611506565b60405180910390fd5b61067f61105e565b565b60008060149054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600580546107139061174a565b80601f016020809104026020016040519081016040528092919081815260200182805461073f9061174a565b801561078c5780601f106107615761010080835404028352916020019161078c565b820191906000526020600020905b81548152906001019060200180831161076f57829003601f168201915b5050505050905090565b60006107a0610681565b156107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790611586565b60405180910390fd5b610879338461087485600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fff90919063ffffffff16565b610b30565b6001905092915050565b600061088d610681565b156108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490611586565b60405180910390fd5b6108d8338484610d43565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790611506565b60405180910390fd5b6109786110fa565b565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690611506565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284610ae19190611638565b905083811015610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90611546565b60405180910390fd5b8091505092915050565b610b38610681565b15610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f90611586565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf906115c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611526565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d3691906115e6565b60405180910390a3505050565b610d4b610681565b15610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290611586565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df2906115a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e62906114c6565b60405180910390fd5b610ebd81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fff90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ad290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ff291906115e6565b60405180910390a3505050565b600082821115611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90611566565b60405180910390fd5b60008284611052919061168e565b90508091505092915050565b611066610681565b156110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90611586565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516110f0919061146e565b60405180910390a1565b611102610681565b611141576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611138906114e6565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3360405161118a919061146e565b60405180910390a1565b6000813590506111a3816119f9565b92915050565b6000813590506111b881611a10565b92915050565b6000602082840312156111d4576111d36117da565b5b60006111e284828501611194565b91505092915050565b60008060408385031215611202576112016117da565b5b600061121085828601611194565b925050602061122185828601611194565b9150509250929050565b600080600060608486031215611244576112436117da565b5b600061125286828701611194565b935050602061126386828701611194565b9250506040611274868287016111a9565b9150509250925092565b60008060408385031215611295576112946117da565b5b60006112a385828601611194565b92505060206112b4858286016111a9565b9150509250929050565b6112c7816116c2565b82525050565b6112d6816116d4565b82525050565b60006112e78261161c565b6112f18185611627565b9350611301818560208601611717565b61130a816117df565b840191505092915050565b6000611322602383611627565b915061132d826117f0565b604082019050919050565b6000611345601483611627565b91506113508261183f565b602082019050919050565b6000611368601283611627565b915061137382611868565b602082019050919050565b600061138b602283611627565b915061139682611891565b604082019050919050565b60006113ae601b83611627565b91506113b9826118e0565b602082019050919050565b60006113d1601e83611627565b91506113dc82611909565b602082019050919050565b60006113f4601083611627565b91506113ff82611932565b602082019050919050565b6000611417602583611627565b91506114228261195b565b604082019050919050565b600061143a602483611627565b9150611445826119aa565b604082019050919050565b61145981611700565b82525050565b6114688161170a565b82525050565b600060208201905061148360008301846112be565b92915050565b600060208201905061149e60008301846112cd565b92915050565b600060208201905081810360008301526114be81846112dc565b905092915050565b600060208201905081810360008301526114df81611315565b9050919050565b600060208201905081810360008301526114ff81611338565b9050919050565b6000602082019050818103600083015261151f8161135b565b9050919050565b6000602082019050818103600083015261153f8161137e565b9050919050565b6000602082019050818103600083015261155f816113a1565b9050919050565b6000602082019050818103600083015261157f816113c4565b9050919050565b6000602082019050818103600083015261159f816113e7565b9050919050565b600060208201905081810360008301526115bf8161140a565b9050919050565b600060208201905081810360008301526115df8161142d565b9050919050565b60006020820190506115fb6000830184611450565b92915050565b6000602082019050611616600083018461145f565b92915050565b600081519050919050565b600082825260208201905092915050565b600061164382611700565b915061164e83611700565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116835761168261177c565b5b828201905092915050565b600061169982611700565b91506116a483611700565b9250828210156116b7576116b661177c565b5b828203905092915050565b60006116cd826116e0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561173557808201518184015260208101905061171a565b83811115611744576000848401525b50505050565b6000600282049050600182168061176257607f821691505b60208210811415611776576117756117ab565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f4f6e6c792043616c6c206279204f776e65720000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b611a02816116c2565b8114611a0d57600080fd5b50565b611a1981611700565b8114611a2457600080fd5b5056fea26469706673582212200b484b2b0126e9089591aba7508abdb884d1dce818cbf29484af231c2a4c094464736f6c63430008070033