0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4d79546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d544b000000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620005d0565b508060049081620000a19190620005d0565b505050620000c4620000b86200010860201b60201c565b6200011060201b60201c565b6200010233620000d9620001d660201b60201c565b600a620000e7919062000847565b6101f4620000f6919062000898565b620001df60201b60201c565b620009cf565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002489062000944565b60405180910390fd5b62000265600083836200034c60201b60201c565b806002600082825462000279919062000966565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032c9190620009b2565b60405180910390a362000348600083836200035160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d857607f821691505b602082108103620003ee57620003ed62000390565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000419565b62000464868362000419565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b1620004ab620004a5846200047c565b62000486565b6200047c565b9050919050565b6000819050919050565b620004cd8362000490565b620004e5620004dc82620004b8565b84845462000426565b825550505050565b600090565b620004fc620004ed565b62000509818484620004c2565b505050565b5b81811015620005315762000525600082620004f2565b6001810190506200050f565b5050565b601f82111562000580576200054a81620003f4565b620005558462000409565b8101602085101562000565578190505b6200057d620005748562000409565b8301826200050e565b50505b505050565b600082821c905092915050565b6000620005a56000198460080262000585565b1980831691505092915050565b6000620005c0838362000592565b9150826002028217905092915050565b620005db8262000356565b67ffffffffffffffff811115620005f757620005f662000361565b5b620006038254620003bf565b6200061082828562000535565b600060209050601f83116001811462000648576000841562000633578287015190505b6200063f8582620005b2565b865550620006af565b601f1984166200065886620003f4565b60005b8281101562000682578489015182556001820191506020850194506020810190506200065b565b86831015620006a257848901516200069e601f89168262000592565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000745578086048111156200071d576200071c620006b7565b5b60018516156200072d5780820291505b80810290506200073d85620006e6565b9450620006fd565b94509492505050565b60008262000760576001905062000833565b8162000770576000905062000833565b81600181146200078957600281146200079457620007ca565b600191505062000833565b60ff841115620007a957620007a8620006b7565b5b8360020a915084821115620007c357620007c2620006b7565b5b5062000833565b5060208310610133831016604e8410600b8410161715620008045782820a905083811115620007fe57620007fd620006b7565b5b62000833565b620008138484846001620006f3565b925090508184048111156200082d576200082c620006b7565b5b81810290505b9392505050565b600060ff82169050919050565b600062000854826200047c565b915062000861836200083a565b9250620008907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200074e565b905092915050565b6000620008a5826200047c565b9150620008b2836200047c565b9250828202620008c2816200047c565b91508282048414831517620008dc57620008db620006b7565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200092c601f83620008e3565b91506200093982620008f4565b602082019050919050565b600060208201905081810360008301526200095f816200091d565b9050919050565b600062000973826200047c565b915062000980836200047c565b92508282019050808211156200099b576200099a620006b7565b5b92915050565b620009ac816200047c565b82525050565b6000602082019050620009c96000830184620009a1565b92915050565b6122e780620009df6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461031e578063a9059cbb1461034e578063d9d98ce41461037e578063dd62ed3e146103ae578063f2fde38b146103de57610121565b806370a082311461028c578063715018a6146102bc57806379cc6790146102c65780638da5cb5b146102e257806395d89b411461030057610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c68146102105780635cffe9de1461022c578063613255ab1461025c57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103fa565b60405161013b91906114df565b60405180910390f35b61015e6004803603810190610159919061159f565b61048c565b60405161016b91906115fa565b60405180910390f35b61017c6104af565b6040516101899190611624565b60405180910390f35b6101ac60048036038101906101a7919061163f565b6104b9565b6040516101b991906115fa565b60405180910390f35b6101ca6104e8565b6040516101d791906116ae565b60405180910390f35b6101fa60048036038101906101f5919061159f565b6104f1565b60405161020791906115fa565b60405180910390f35b61022a600480360381019061022591906116c9565b610528565b005b61024660048036038101906102419190611799565b61053c565b60405161025391906115fa565b60405180910390f35b61027660048036038101906102719190611821565b610729565b6040516102839190611624565b60405180910390f35b6102a660048036038101906102a19190611821565b6107a0565b6040516102b39190611624565b60405180910390f35b6102c46107e8565b005b6102e060048036038101906102db919061159f565b6107fc565b005b6102ea61081c565b6040516102f7919061185d565b60405180910390f35b610308610846565b60405161031591906114df565b60405180910390f35b6103386004803603810190610333919061159f565b6108d8565b60405161034591906115fa565b60405180910390f35b6103686004803603810190610363919061159f565b61094f565b60405161037591906115fa565b60405180910390f35b6103986004803603810190610393919061159f565b610972565b6040516103a59190611624565b60405180910390f35b6103c860048036038101906103c39190611878565b6109f4565b6040516103d59190611624565b60405180910390f35b6103f860048036038101906103f39190611821565b610a7b565b005b606060038054610409906118e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610435906118e7565b80156104825780601f1061045757610100808354040283529160200191610482565b820191906000526020600020905b81548152906001019060200180831161046557829003601f168201915b5050505050905090565b600080610497610afe565b90506104a4818585610b06565b600191505092915050565b6000600254905090565b6000806104c4610afe565b90506104d1858285610ccf565b6104dc858585610d5b565b60019150509392505050565b60006012905090565b6000806104fc610afe565b905061051d81858561050e85896109f4565b6105189190611947565b610b06565b600191505092915050565b610539610533610afe565b82610fd1565b50565b600061054785610729565b841115610589576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610580906119ed565b60405180910390fd5b60006105958686610972565b90506105a1878661119e565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b815260040161060596959493929190611a5a565b6020604051808303816000875af1158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106489190611aec565b14610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f90611b8b565b60405180910390fd5b60006106926112f4565b90506106aa883084896106a59190611947565b610ccf565b60008214806106e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610704576106ff8883886106fa9190611947565b610fd1565b61071a565b61070e8887610fd1565b610719888284610d5b565b5b60019250505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610765576000610799565b61076d6104af565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107989190611bab565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107f06112f9565b6107fa6000611377565b565b61080e82610808610afe565b83610ccf565b6108188282610fd1565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610855906118e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610881906118e7565b80156108ce5780601f106108a3576101008083540402835291602001916108ce565b820191906000526020600020905b8154815290600101906020018083116108b157829003601f168201915b5050505050905090565b6000806108e3610afe565b905060006108f182866109f4565b905083811015610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90611c51565b60405180910390fd5b6109438286868403610b06565b60019250505092915050565b60008061095a610afe565b9050610967818585610d5b565b600191505092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990611cbd565b60405180910390fd5b6109ec838361143d565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a836112f9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990611d4f565b60405180910390fd5b610afb81611377565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90611de1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb90611e73565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc29190611624565b60405180910390a3505050565b6000610cdb84846109f4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d555781811015610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90611edf565b60405180910390fd5b610d548484848403610b06565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc190611f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090612003565b60405180910390fd5b610e44838383611445565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190612095565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fb89190611624565b60405180910390a3610fcb84848461144a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790612127565b60405180910390fd5b61104c82600083611445565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c9906121b9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111859190611624565b60405180910390a36111998360008461144a565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490612225565b60405180910390fd5b61121960008383611445565b806002600082825461122b9190611947565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112dc9190611624565b60405180910390a36112f06000838361144a565b5050565b600090565b611301610afe565b73ffffffffffffffffffffffffffffffffffffffff1661131f61081c565b73ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90612291565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561148957808201518184015260208101905061146e565b60008484015250505050565b6000601f19601f8301169050919050565b60006114b18261144f565b6114bb818561145a565b93506114cb81856020860161146b565b6114d481611495565b840191505092915050565b600060208201905081810360008301526114f981846114a6565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115368261150b565b9050919050565b6115468161152b565b811461155157600080fd5b50565b6000813590506115638161153d565b92915050565b6000819050919050565b61157c81611569565b811461158757600080fd5b50565b60008135905061159981611573565b92915050565b600080604083850312156115b6576115b5611501565b5b60006115c485828601611554565b92505060206115d58582860161158a565b9150509250929050565b60008115159050919050565b6115f4816115df565b82525050565b600060208201905061160f60008301846115eb565b92915050565b61161e81611569565b82525050565b60006020820190506116396000830184611615565b92915050565b60008060006060848603121561165857611657611501565b5b600061166686828701611554565b935050602061167786828701611554565b92505060406116888682870161158a565b9150509250925092565b600060ff82169050919050565b6116a881611692565b82525050565b60006020820190506116c3600083018461169f565b92915050565b6000602082840312156116df576116de611501565b5b60006116ed8482850161158a565b91505092915050565b60006117018261152b565b9050919050565b611711816116f6565b811461171c57600080fd5b50565b60008135905061172e81611708565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261175957611758611734565b5b8235905067ffffffffffffffff81111561177657611775611739565b5b6020830191508360018202830111156117925761179161173e565b5b9250929050565b6000806000806000608086880312156117b5576117b4611501565b5b60006117c38882890161171f565b95505060206117d488828901611554565b94505060406117e58882890161158a565b935050606086013567ffffffffffffffff81111561180657611805611506565b5b61181288828901611743565b92509250509295509295909350565b60006020828403121561183757611836611501565b5b600061184584828501611554565b91505092915050565b6118578161152b565b82525050565b6000602082019050611872600083018461184e565b92915050565b6000806040838503121561188f5761188e611501565b5b600061189d85828601611554565b92505060206118ae85828601611554565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118ff57607f821691505b602082108103611912576119116118b8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061195282611569565b915061195d83611569565b925082820190508082111561197557611974611918565b5b92915050565b7f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d60008201527f6178466c6173684c6f616e000000000000000000000000000000000000000000602082015250565b60006119d7602b8361145a565b91506119e28261197b565b604082019050919050565b60006020820190508181036000830152611a06816119ca565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000611a398385611a0d565b9350611a46838584611a1e565b611a4f83611495565b840190509392505050565b600060a082019050611a6f600083018961184e565b611a7c602083018861184e565b611a896040830187611615565b611a966060830186611615565b8181036080830152611aa9818486611a2d565b9050979650505050505050565b6000819050919050565b611ac981611ab6565b8114611ad457600080fd5b50565b600081519050611ae681611ac0565b92915050565b600060208284031215611b0257611b01611501565b5b6000611b1084828501611ad7565b91505092915050565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e207660008201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b6000611b7560248361145a565b9150611b8082611b19565b604082019050919050565b60006020820190508181036000830152611ba481611b68565b9050919050565b6000611bb682611569565b9150611bc183611569565b9250828203905081811115611bd957611bd8611918565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c3b60258361145a565b9150611c4682611bdf565b604082019050919050565b60006020820190508181036000830152611c6a81611c2e565b9050919050565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e0000000000600082015250565b6000611ca7601b8361145a565b9150611cb282611c71565b602082019050919050565b60006020820190508181036000830152611cd681611c9a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d3960268361145a565b9150611d4482611cdd565b604082019050919050565b60006020820190508181036000830152611d6881611d2c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611dcb60248361145a565b9150611dd682611d6f565b604082019050919050565b60006020820190508181036000830152611dfa81611dbe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e5d60228361145a565b9150611e6882611e01565b604082019050919050565b60006020820190508181036000830152611e8c81611e50565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ec9601d8361145a565b9150611ed482611e93565b602082019050919050565b60006020820190508181036000830152611ef881611ebc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f5b60258361145a565b9150611f6682611eff565b604082019050919050565b60006020820190508181036000830152611f8a81611f4e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fed60238361145a565b9150611ff882611f91565b604082019050919050565b6000602082019050818103600083015261201c81611fe0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061207f60268361145a565b915061208a82612023565b604082019050919050565b600060208201905081810360008301526120ae81612072565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061211160218361145a565b915061211c826120b5565b604082019050919050565b6000602082019050818103600083015261214081612104565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006121a360228361145a565b91506121ae82612147565b604082019050919050565b600060208201905081810360008301526121d281612196565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061220f601f8361145a565b915061221a826121d9565b602082019050919050565b6000602082019050818103600083015261223e81612202565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061227b60208361145a565b915061228682612245565b602082019050919050565b600060208201905081810360008301526122aa8161226e565b905091905056fea26469706673582212201f35981745949d0af48077d118d2ece2595fddd9930f6a3b149ff940ad7386be64736f6c63430008120033