0x608060405234801562000010575f80fd5b506040516200183738038062001837833981810160405281019062000036919062000317565b6040518060400160405280600981526020017f53686172696e67616e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53524e00000000000000000000000000000000000000000000000000000000008152506b019d971e4fe8401e740000008260049081620000c09190620005ab565b508160059081620000d29190620005ab565b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012581336200012f60201b60201c565b50505050620007a0565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b890620006ed565b60405180910390fd5b620001d45f8284620002ad60201b60201c565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200022291906200073a565b92505081905550815f808282546200023b91906200073a565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a1919062000785565b60405180910390a35050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002e182620002b6565b9050919050565b620002f381620002d5565b8114620002fe575f80fd5b50565b5f815190506200031181620002e8565b92915050565b5f602082840312156200032f576200032e620002b2565b5b5f6200033e8482850162000301565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003c357607f821691505b602082108103620003d957620003d86200037e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200043d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000400565b62000449868362000400565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004936200048d620004878462000461565b6200046a565b62000461565b9050919050565b5f819050919050565b620004ae8362000473565b620004c6620004bd826200049a565b8484546200040c565b825550505050565b5f90565b620004dc620004ce565b620004e9818484620004a3565b505050565b5b818110156200051057620005045f82620004d2565b600181019050620004ef565b5050565b601f8211156200055f576200052981620003df565b6200053484620003f1565b8101602085101562000544578190505b6200055c6200055385620003f1565b830182620004ee565b50505b505050565b5f82821c905092915050565b5f620005815f198460080262000564565b1980831691505092915050565b5f6200059b838362000570565b9150826002028217905092915050565b620005b68262000347565b67ffffffffffffffff811115620005d257620005d162000351565b5b620005de8254620003ab565b620005eb82828562000514565b5f60209050601f83116001811462000621575f84156200060c578287015190505b6200061885826200058e565b86555062000687565b601f1984166200063186620003df565b5f5b828110156200065a5784890151825560018201915060208501945060208101905062000633565b868310156200067a578489015162000676601f89168262000570565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f620006d5600d836200068f565b9150620006e2826200069f565b602082019050919050565b5f6020820190508181035f8301526200070681620006c7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007468262000461565b9150620007538362000461565b92508282019050808211156200076e576200076d6200070d565b5b92915050565b6200077f8162000461565b82525050565b5f6020820190506200079a5f83018462000774565b92915050565b61108980620007ae5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a082311461013d57806394bf804d1461016d57806395d89b41146101895780639dc29fac146101a7578063a9059cbb146101c3578063dd62ed3e146101df576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100e557806323b872dd14610103578063313ce5671461011f575b5f80fd5b6100b361020f565b6040516100c09190610c1d565b60405180910390f35b6100e360048036038101906100de9190610cce565b61029f565b005b6100ed6102ae565b6040516100fa9190610d1b565b60405180910390f35b61011d60048036038101906101189190610d34565b6102b6565b005b610127610569565b6040516101349190610d1b565b60405180910390f35b61015760048036038101906101529190610d84565b610571565b6040516101649190610d1b565b60405180910390f35b61018760048036038101906101829190610daf565b6105b7565b005b610191610724565b60405161019e9190610c1d565b60405180910390f35b6101c160048036038101906101bc9190610cce565b6107b4565b005b6101dd60048036038101906101d89190610cce565b6108bc565b005b6101f960048036038101906101f49190610ded565b610a25565b6040516102069190610d1b565b60405180910390f35b60606004805461021e90610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461024a90610e58565b80156102955780601f1061026c57610100808354040283529160200191610295565b820191905f5260205f20905b81548152906001019060200180831161027857829003601f168201915b5050505050905090565b6102aa338383610aa7565b5050565b5f8054905090565b8281806102c283610571565b1015610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90610ed2565b60405180910390fd5b61030e858585610b8e565b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156103c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c090610f3a565b60405180910390fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104509190610f85565b925050819055508260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104a39190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104f69190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161055a9190610d1b565b60405180910390a35050505050565b5f6012905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90611035565b60405180910390fd5b6106515f8284610b8e565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461069d9190610fb8565b92505081905550815f808282546106b49190610fb8565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107189190610d1b565b60405180910390a35050565b60606005805461073390610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90610e58565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611035565b60405180910390fd5b61084e825f83610b8e565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461089a9190610f85565b92505081905550805f808282546108b19190610f85565b925050819055505050565b3381806108c883610571565b1015610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090610ed2565b60405180910390fd5b610914338585610b8e565b8260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109609190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109b39190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a179190610d1b565b60405180910390a350505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610b819190610d1b565b60405180910390a3505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bca578082015181840152602081019050610baf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bef82610b93565b610bf98185610b9d565b9350610c09818560208601610bad565b610c1281610bd5565b840191505092915050565b5f6020820190508181035f830152610c358184610be5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6a82610c41565b9050919050565b610c7a81610c60565b8114610c84575f80fd5b50565b5f81359050610c9581610c71565b92915050565b5f819050919050565b610cad81610c9b565b8114610cb7575f80fd5b50565b5f81359050610cc881610ca4565b92915050565b5f8060408385031215610ce457610ce3610c3d565b5b5f610cf185828601610c87565b9250506020610d0285828601610cba565b9150509250929050565b610d1581610c9b565b82525050565b5f602082019050610d2e5f830184610d0c565b92915050565b5f805f60608486031215610d4b57610d4a610c3d565b5b5f610d5886828701610c87565b9350506020610d6986828701610c87565b9250506040610d7a86828701610cba565b9150509250925092565b5f60208284031215610d9957610d98610c3d565b5b5f610da684828501610c87565b91505092915050565b5f8060408385031215610dc557610dc4610c3d565b5b5f610dd285828601610cba565b9250506020610de385828601610c87565b9150509250929050565b5f8060408385031215610e0357610e02610c3d565b5b5f610e1085828601610c87565b9250506020610e2185828601610c87565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e6f57607f821691505b602082108103610e8257610e81610e2b565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e732100000000000000000000000000005f82015250565b5f610ebc601283610b9d565b9150610ec782610e88565b602082019050919050565b5f6020820190508181035f830152610ee981610eb0565b9050919050565b7f636865636b20616c6c6f77616e636521000000000000000000000000000000005f82015250565b5f610f24601083610b9d565b9150610f2f82610ef0565b602082019050919050565b5f6020820190508181035f830152610f5181610f18565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f8f82610c9b565b9150610f9a83610c9b565b9250828203905081811115610fb257610fb1610f58565b5b92915050565b5f610fc282610c9b565b9150610fcd83610c9b565b9250828201905080821115610fe557610fe4610f58565b5b92915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f61101f600d83610b9d565b915061102a82610feb565b602082019050919050565b5f6020820190508181035f83015261104c81611013565b905091905056fea2646970667358221220c5593e2c32eac780469ca07bb8cea872c5bfac58f18a941345f65104a8906d9f64736f6c6343000814003300000000000000000000000024381906d1c2a461620902fd0c0370cf296083bc