0x608060405234801562000010575f80fd5b506040516200183638038062001836833981810160405281019062000036919062000316565b6040518060400160405280600b81526020017f4e6f736f7620546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e535600000000000000000000000000000000000000000000000000000000008152506a084595161401484a0000008260049081620000bf9190620005aa565b508160059081620000d19190620005aa565b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012481336200012e60201b60201c565b505050506200079f565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b790620006ec565b60405180910390fd5b620001d35f8284620002ac60201b60201c565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000221919062000739565b92505081905550815f808282546200023a919062000739565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a0919062000784565b60405180910390a35050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002e082620002b5565b9050919050565b620002f281620002d4565b8114620002fd575f80fd5b50565b5f815190506200031081620002e7565b92915050565b5f602082840312156200032e576200032d620002b1565b5b5f6200033d8482850162000300565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003c257607f821691505b602082108103620003d857620003d76200037d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200043c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003ff565b620004488683620003ff565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004926200048c620004868462000460565b62000469565b62000460565b9050919050565b5f819050919050565b620004ad8362000472565b620004c5620004bc8262000499565b8484546200040b565b825550505050565b5f90565b620004db620004cd565b620004e8818484620004a2565b505050565b5b818110156200050f57620005035f82620004d1565b600181019050620004ee565b5050565b601f8211156200055e576200052881620003de565b6200053384620003f0565b8101602085101562000543578190505b6200055b6200055285620003f0565b830182620004ed565b50505b505050565b5f82821c905092915050565b5f620005805f198460080262000563565b1980831691505092915050565b5f6200059a83836200056f565b9150826002028217905092915050565b620005b58262000346565b67ffffffffffffffff811115620005d157620005d062000350565b5b620005dd8254620003aa565b620005ea82828562000513565b5f60209050601f83116001811462000620575f84156200060b578287015190505b6200061785826200058d565b86555062000686565b601f1984166200063086620003de565b5f5b82811015620006595784890151825560018201915060208501945060208101905062000632565b8683101562000679578489015162000675601f8916826200056f565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f620006d4600d836200068e565b9150620006e1826200069e565b602082019050919050565b5f6020820190508181035f8301526200070581620006c6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007458262000460565b9150620007528362000460565b92508282019050808211156200076d576200076c6200070c565b5b92915050565b6200077e8162000460565b82525050565b5f602082019050620007995f83018462000773565b92915050565b61108980620007ad5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a082311461013d57806394bf804d1461016d57806395d89b41146101895780639dc29fac146101a7578063a9059cbb146101c3578063dd62ed3e146101df576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100e557806323b872dd14610103578063313ce5671461011f575b5f80fd5b6100b361020f565b6040516100c09190610c1d565b60405180910390f35b6100e360048036038101906100de9190610cce565b61029f565b005b6100ed6102ae565b6040516100fa9190610d1b565b60405180910390f35b61011d60048036038101906101189190610d34565b6102b6565b005b610127610569565b6040516101349190610d1b565b60405180910390f35b61015760048036038101906101529190610d84565b610571565b6040516101649190610d1b565b60405180910390f35b61018760048036038101906101829190610daf565b6105b7565b005b610191610724565b60405161019e9190610c1d565b60405180910390f35b6101c160048036038101906101bc9190610cce565b6107b4565b005b6101dd60048036038101906101d89190610cce565b6108bc565b005b6101f960048036038101906101f49190610ded565b610a25565b6040516102069190610d1b565b60405180910390f35b60606004805461021e90610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461024a90610e58565b80156102955780601f1061026c57610100808354040283529160200191610295565b820191905f5260205f20905b81548152906001019060200180831161027857829003601f168201915b5050505050905090565b6102aa338383610aa7565b5050565b5f8054905090565b8281806102c283610571565b1015610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90610ed2565b60405180910390fd5b61030e858585610b8e565b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156103c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c090610f3a565b60405180910390fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104509190610f85565b925050819055508260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104a39190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104f69190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161055a9190610d1b565b60405180910390a35050505050565b5f6012905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90611035565b60405180910390fd5b6106515f8284610b8e565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461069d9190610fb8565b92505081905550815f808282546106b49190610fb8565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107189190610d1b565b60405180910390a35050565b60606005805461073390610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90610e58565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611035565b60405180910390fd5b61084e825f83610b8e565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461089a9190610f85565b92505081905550805f808282546108b19190610f85565b925050819055505050565b3381806108c883610571565b1015610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090610ed2565b60405180910390fd5b610914338585610b8e565b8260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109609190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109b39190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a179190610d1b565b60405180910390a350505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610b819190610d1b565b60405180910390a3505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bca578082015181840152602081019050610baf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bef82610b93565b610bf98185610b9d565b9350610c09818560208601610bad565b610c1281610bd5565b840191505092915050565b5f6020820190508181035f830152610c358184610be5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6a82610c41565b9050919050565b610c7a81610c60565b8114610c84575f80fd5b50565b5f81359050610c9581610c71565b92915050565b5f819050919050565b610cad81610c9b565b8114610cb7575f80fd5b50565b5f81359050610cc881610ca4565b92915050565b5f8060408385031215610ce457610ce3610c3d565b5b5f610cf185828601610c87565b9250506020610d0285828601610cba565b9150509250929050565b610d1581610c9b565b82525050565b5f602082019050610d2e5f830184610d0c565b92915050565b5f805f60608486031215610d4b57610d4a610c3d565b5b5f610d5886828701610c87565b9350506020610d6986828701610c87565b9250506040610d7a86828701610cba565b9150509250925092565b5f60208284031215610d9957610d98610c3d565b5b5f610da684828501610c87565b91505092915050565b5f8060408385031215610dc557610dc4610c3d565b5b5f610dd285828601610cba565b9250506020610de385828601610c87565b9150509250929050565b5f8060408385031215610e0357610e02610c3d565b5b5f610e1085828601610c87565b9250506020610e2185828601610c87565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e6f57607f821691505b602082108103610e8257610e81610e2b565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e732100000000000000000000000000005f82015250565b5f610ebc601283610b9d565b9150610ec782610e88565b602082019050919050565b5f6020820190508181035f830152610ee981610eb0565b9050919050565b7f636865636b20616c6c6f77616e636521000000000000000000000000000000005f82015250565b5f610f24601083610b9d565b9150610f2f82610ef0565b602082019050919050565b5f6020820190508181035f830152610f5181610f18565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f8f82610c9b565b9150610f9a83610c9b565b9250828203905081811115610fb257610fb1610f58565b5b92915050565b5f610fc282610c9b565b9150610fcd83610c9b565b9250828201905080821115610fe557610fe4610f58565b5b92915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f61101f600d83610b9d565b915061102a82610feb565b602082019050919050565b5f6020820190508181035f83015261104c81611013565b905091905056fea264697066735822122072d70331dcad8819f02731ff296da0257dfa833b58dd34a7b767a0493be1621f64736f6c63430008140033000000000000000000000000afbf9cf381c4a90d63fadb1c220d39eb61cedb2e