60806040526012600660006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040518060400160405280600b81526020017f42726f6e7920546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42524f4e590000000000000000000000000000000000000000000000000000008152506000620000ac620001c060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600490816200015b9190620005c5565b5080600590816200016d9190620005c5565b5050506000641bf08eb0009050620001b933600660009054906101000a900460ff1660ff16600a620001a091906200082f565b83620001ad919062000880565b620001c860201b60201c565b50620009b7565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200023a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000231906200092c565b60405180910390fd5b6200024e600083836200034160201b60201c565b80600360008282546200026291906200094e565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002ba91906200094e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032191906200099a565b60405180910390a36200033d600083836200034660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003cd57607f821691505b602082108103620003e357620003e262000385565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200044d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200040e565b6200045986836200040e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004a6620004a06200049a8462000471565b6200047b565b62000471565b9050919050565b6000819050919050565b620004c28362000485565b620004da620004d182620004ad565b8484546200041b565b825550505050565b600090565b620004f1620004e2565b620004fe818484620004b7565b505050565b5b8181101562000526576200051a600082620004e7565b60018101905062000504565b5050565b601f82111562000575576200053f81620003e9565b6200054a84620003fe565b810160208510156200055a578190505b620005726200056985620003fe565b83018262000503565b50505b505050565b600082821c905092915050565b60006200059a600019846008026200057a565b1980831691505092915050565b6000620005b5838362000587565b9150826002028217905092915050565b620005d0826200034b565b67ffffffffffffffff811115620005ec57620005eb62000356565b5b620005f88254620003b4565b620006058282856200052a565b600060209050601f8311600181146200063d576000841562000628578287015190505b620006348582620005a7565b865550620006a4565b601f1984166200064d86620003e9565b60005b82811015620006775784890151825560018201915060208501945060208101905062000650565b8683101562000697578489015162000693601f89168262000587565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200073a57808604811115620007125762000711620006ac565b5b6001851615620007225780820291505b80810290506200073285620006db565b9450620006f2565b94509492505050565b60008262000755576001905062000828565b8162000765576000905062000828565b81600181146200077e57600281146200078957620007bf565b600191505062000828565b60ff8411156200079e576200079d620006ac565b5b8360020a915084821115620007b857620007b7620006ac565b5b5062000828565b5060208310610133831016604e8410600b8410161715620007f95782820a905083811115620007f357620007f2620006ac565b5b62000828565b620008088484846001620006e8565b92509050818404811115620008225762000821620006ac565b5b81810290505b9392505050565b60006200083c8262000471565b9150620008498362000471565b9250620008787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000743565b905092915050565b60006200088d8262000471565b91506200089a8362000471565b9250828202620008aa8162000471565b91508282048414831517620008c457620008c3620006ac565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000914601f83620008cb565b91506200092182620008dc565b602082019050919050565b60006020820190508181036000830152620009478162000905565b9050919050565b60006200095b8262000471565b9150620009688362000471565b9250828201905080821115620009835762000982620006ac565b5b92915050565b620009948162000471565b82525050565b6000602082019050620009b1600083018462000989565b92915050565b61189d80620009c76000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b604051610104919061102c565b60405180910390f35b610127600480360381019061012291906110e7565b61038d565b6040516101349190611142565b60405180910390f35b6101456103ab565b604051610152919061116c565b60405180910390f35b61017560048036038101906101709190611187565b6103b5565b6040516101829190611142565b60405180910390f35b6101936104d4565b6040516101a091906111f6565b60405180910390f35b6101c360048036038101906101be91906110e7565b6104eb565b6040516101d09190611142565b60405180910390f35b6101f360048036038101906101ee9190611211565b610597565b604051610200919061116c565b60405180910390f35b6102116105e0565b005b61021b610733565b604051610228919061124d565b60405180910390f35b61023961075c565b604051610246919061102c565b60405180910390f35b610269600480360381019061026491906110e7565b6107ee565b6040516102769190611142565b60405180910390f35b610299600480360381019061029491906110e7565b6108d9565b6040516102a69190611142565b60405180910390f35b6102c960048036038101906102c49190611268565b6108f7565b6040516102d6919061116c565b60405180910390f35b6102f960048036038101906102f49190611211565b61097e565b005b60606004805461030a906112d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610336906112d7565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60006103a161039a610b3f565b8484610b47565b6001905092915050565b6000600354905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610401610b3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104bd57828110156104a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049f9061137a565b60405180910390fd5b6104bc856104b4610b3f565b858403610b47565b5b6104c8858585610d10565b60019150509392505050565b6000600660009054906101000a900460ff16905090565b600061058d6104f8610b3f565b848460026000610506610b3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461058891906113c9565b610b47565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e8610b3f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90611449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461076b906112d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610797906112d7565b80156107e45780601f106107b9576101008083540402835291602001916107e4565b820191906000526020600020905b8154815290600101906020018083116107c757829003601f168201915b5050505050905090565b600080600260006107fd610b3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b1906114db565b60405180910390fd5b6108ce6108c5610b3f565b85858403610b47565b600191505092915050565b60006108ed6108e6610b3f565b8484610d10565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610986610b3f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90611449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a799061156d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906115ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90611691565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d03919061116c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690611723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de5906117b5565b60405180910390fd5b610df9838383610f92565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790611847565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f1591906113c9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f79919061116c565b60405180910390a3610f8c848484610f97565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fd6578082015181840152602081019050610fbb565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ffe82610f9c565b6110088185610fa7565b9350611018818560208601610fb8565b61102181610fe2565b840191505092915050565b600060208201905081810360008301526110468184610ff3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061107e82611053565b9050919050565b61108e81611073565b811461109957600080fd5b50565b6000813590506110ab81611085565b92915050565b6000819050919050565b6110c4816110b1565b81146110cf57600080fd5b50565b6000813590506110e1816110bb565b92915050565b600080604083850312156110fe576110fd61104e565b5b600061110c8582860161109c565b925050602061111d858286016110d2565b9150509250929050565b60008115159050919050565b61113c81611127565b82525050565b60006020820190506111576000830184611133565b92915050565b611166816110b1565b82525050565b6000602082019050611181600083018461115d565b92915050565b6000806000606084860312156111a05761119f61104e565b5b60006111ae8682870161109c565b93505060206111bf8682870161109c565b92505060406111d0868287016110d2565b9150509250925092565b600060ff82169050919050565b6111f0816111da565b82525050565b600060208201905061120b60008301846111e7565b92915050565b6000602082840312156112275761122661104e565b5b60006112358482850161109c565b91505092915050565b61124781611073565b82525050565b6000602082019050611262600083018461123e565b92915050565b6000806040838503121561127f5761127e61104e565b5b600061128d8582860161109c565b925050602061129e8582860161109c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112ef57607f821691505b602082108103611302576113016112a8565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611364602883610fa7565b915061136f82611308565b604082019050919050565b6000602082019050818103600083015261139381611357565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d4826110b1565b91506113df836110b1565b92508282019050808211156113f7576113f661139a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611433602083610fa7565b915061143e826113fd565b602082019050919050565b6000602082019050818103600083015261146281611426565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114c5602583610fa7565b91506114d082611469565b604082019050919050565b600060208201905081810360008301526114f4816114b8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611557602683610fa7565b9150611562826114fb565b604082019050919050565b600060208201905081810360008301526115868161154a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006115e9602483610fa7565b91506115f48261158d565b604082019050919050565b60006020820190508181036000830152611618816115dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061167b602283610fa7565b91506116868261161f565b604082019050919050565b600060208201905081810360008301526116aa8161166e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061170d602583610fa7565b9150611718826116b1565b604082019050919050565b6000602082019050818103600083015261173c81611700565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061179f602383610fa7565b91506117aa82611743565b604082019050919050565b600060208201905081810360008301526117ce81611792565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611831602683610fa7565b915061183c826117d5565b604082019050919050565b6000602082019050818103600083015261186081611824565b905091905056fea2646970667358221220cb754a25e27f6dfe7b5e850ac3756f4b3be86ba091b0d47b9b85dd9ef3ea5a7e64736f6c63430008120033