60806040523480156200001157600080fd5b506040518060400160405280600881526020017f457468657265756d0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45544800000000000000000000000000000000000000000000000000000000008152508181816003908162000091919062000369565b508060049081620000a3919062000369565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000450565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200017157607f821691505b60208210810362000187576200018662000129565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b2565b620001fd8683620001b2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200024a620002446200023e8462000215565b6200021f565b62000215565b9050919050565b6000819050919050565b620002668362000229565b6200027e620002758262000251565b848454620001bf565b825550505050565b600090565b6200029562000286565b620002a28184846200025b565b505050565b5b81811015620002ca57620002be6000826200028b565b600181019050620002a8565b5050565b601f8211156200031957620002e3816200018d565b620002ee84620001a2565b81016020851015620002fe578190505b620003166200030d85620001a2565b830182620002a7565b50505b505050565b600082821c905092915050565b60006200033e600019846008026200031e565b1980831691505092915050565b60006200035983836200032b565b9150826002028217905092915050565b6200037482620000ef565b67ffffffffffffffff81111562000390576200038f620000fa565b5b6200039c825462000158565b620003a9828285620002ce565b600060209050601f831160018114620003e15760008415620003cc578287015190505b620003d885826200034b565b86555062000448565b601f198416620003f1866200018d565b60005b828110156200041b57848901518255600182019150602085019450602081019050620003f4565b868310156200043b578489015162000437601f8916826200032b565b8355505b6001600288020188555050505b505050505050565b6119f380620004606000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c5780639dc29fac116100665780639dc29fac1461025f578063a457c2d71461027b578063a9059cbb146102ab578063dd62ed3e146102db576100ea565b806370a08231146101f5578063880cdc311461022557806395d89b4114610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806340c10f19146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030b565b60405161010491906110d4565b60405180910390f35b6101276004803603810190610122919061118f565b61039d565b60405161013491906111ea565b60405180910390f35b6101456103c0565b6040516101529190611214565b60405180910390f35b6101756004803603810190610170919061122f565b6103ca565b60405161018291906111ea565b60405180910390f35b6101936103f9565b6040516101a0919061129e565b60405180910390f35b6101c360048036038101906101be919061118f565b610402565b6040516101d091906111ea565b60405180910390f35b6101f360048036038101906101ee919061118f565b610439565b005b61020f600480360381019061020a91906112b9565b6104d7565b60405161021c9190611214565b60405180910390f35b61023f600480360381019061023a91906112b9565b61051f565b005b6102496105f3565b60405161025691906110d4565b60405180910390f35b6102796004803603810190610274919061118f565b610685565b005b6102956004803603810190610290919061118f565b610723565b6040516102a291906111ea565b60405180910390f35b6102c560048036038101906102c0919061118f565b61079a565b6040516102d291906111ea565b60405180910390f35b6102f560048036038101906102f091906112e6565b6107bd565b6040516103029190611214565b60405180910390f35b60606003805461031a90611355565b80601f016020809104026020016040519081016040528092919081815260200182805461034690611355565b80156103935780601f1061036857610100808354040283529160200191610393565b820191906000526020600020905b81548152906001019060200180831161037657829003601f168201915b5050505050905090565b6000806103a8610844565b90506103b581858561084c565b600191505092915050565b6000600254905090565b6000806103d5610844565b90506103e2858285610a15565b6103ed858585610aa1565b60019150509392505050565b60006012905090565b60008061040d610844565b905061042e81858561041f85896107bd565b61042991906113b5565b61084c565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c090611435565b60405180910390fd5b6104d38282610d17565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a690611435565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606004805461060290611355565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90611355565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070c90611435565b60405180910390fd5b61071f8282610e6d565b5050565b60008061072e610844565b9050600061073c82866107bd565b905083811015610781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610778906114c7565b60405180910390fd5b61078e828686840361084c565b60019250505092915050565b6000806107a5610844565b90506107b2818585610aa1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290611559565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361092a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610921906115eb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a089190611214565b60405180910390a3505050565b6000610a2184846107bd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a9b5781811015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490611657565b60405180910390fd5b610a9a848484840361084c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b07906116e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b769061177b565b60405180910390fd5b610b8a83838361103a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079061180d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cfe9190611214565b60405180910390a3610d1184848461103f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611879565b60405180910390fd5b610d926000838361103a565b8060026000828254610da491906113b5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e559190611214565b60405180910390a3610e696000838361103f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed39061190b565b60405180910390fd5b610ee88260008361103a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f659061199d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110219190611214565b60405180910390a36110358360008461103f565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561107e578082015181840152602081019050611063565b60008484015250505050565b6000601f19601f8301169050919050565b60006110a682611044565b6110b0818561104f565b93506110c0818560208601611060565b6110c98161108a565b840191505092915050565b600060208201905081810360008301526110ee818461109b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611126826110fb565b9050919050565b6111368161111b565b811461114157600080fd5b50565b6000813590506111538161112d565b92915050565b6000819050919050565b61116c81611159565b811461117757600080fd5b50565b60008135905061118981611163565b92915050565b600080604083850312156111a6576111a56110f6565b5b60006111b485828601611144565b92505060206111c58582860161117a565b9150509250929050565b60008115159050919050565b6111e4816111cf565b82525050565b60006020820190506111ff60008301846111db565b92915050565b61120e81611159565b82525050565b60006020820190506112296000830184611205565b92915050565b600080600060608486031215611248576112476110f6565b5b600061125686828701611144565b935050602061126786828701611144565b92505060406112788682870161117a565b9150509250925092565b600060ff82169050919050565b61129881611282565b82525050565b60006020820190506112b3600083018461128f565b92915050565b6000602082840312156112cf576112ce6110f6565b5b60006112dd84828501611144565b91505092915050565b600080604083850312156112fd576112fc6110f6565b5b600061130b85828601611144565b925050602061131c85828601611144565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061136d57607f821691505b6020821081036113805761137f611326565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113c082611159565b91506113cb83611159565b92508282019050808211156113e3576113e2611386565b5b92915050565b7f4e6f74204f776e65720000000000000000000000000000000000000000000000600082015250565b600061141f60098361104f565b915061142a826113e9565b602082019050919050565b6000602082019050818103600083015261144e81611412565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114b160258361104f565b91506114bc82611455565b604082019050919050565b600060208201905081810360008301526114e0816114a4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061154360248361104f565b915061154e826114e7565b604082019050919050565b6000602082019050818103600083015261157281611536565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006115d560228361104f565b91506115e082611579565b604082019050919050565b60006020820190508181036000830152611604816115c8565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611641601d8361104f565b915061164c8261160b565b602082019050919050565b6000602082019050818103600083015261167081611634565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006116d360258361104f565b91506116de82611677565b604082019050919050565b60006020820190508181036000830152611702816116c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061176560238361104f565b915061177082611709565b604082019050919050565b6000602082019050818103600083015261179481611758565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006117f760268361104f565b91506118028261179b565b604082019050919050565b60006020820190508181036000830152611826816117ea565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611863601f8361104f565b915061186e8261182d565b602082019050919050565b6000602082019050818103600083015261189281611856565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006118f560218361104f565b915061190082611899565b604082019050919050565b60006020820190508181036000830152611924816118e8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061198760228361104f565b91506119928261192b565b604082019050919050565b600060208201905081810360008301526119b68161197a565b905091905056fea2646970667358221220ae8bfcf2d9849a0497334e29740aebde53b1f16fe234ac5c393a821c8eac73f764736f6c63430008130033