608060405260405180608001604052805f67ffffffffffffffff1681526020015f67ffffffffffffffff168152602001606467ffffffffffffffff16815260200167ffffffffffffffff801667ffffffffffffffff1681525060069060046200006a92919062000329565b5034801562000077575f80fd5b506040516200266a3803806200266a83398181016040528101906200009d91906200046b565b5f620000ae620002fb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200019b91906200062d565b620f4240620001ab91906200067d565b60015f620001be620002fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002106200030260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200026f620002fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620002cd91906200062d565b620f4240620002dd91906200067d565b604051620002ec9190620006d8565b60405180910390a350620006f3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054828255905f5260205f2090600301600490048101928215620003d6579160200282015f5b838211156200039e57835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550926020019260080160208160070104928301926001030262000350565b8015620003d45782816101000a81549067ffffffffffffffff02191690556008016020816007010492830192600103026200039e565b505b509050620003e59190620003e9565b5090565b5b8082111562000402575f815f905550600101620003ea565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000435826200040a565b9050919050565b620004478162000429565b811462000452575f80fd5b50565b5f8151905062000465816200043c565b92915050565b5f6020828403121562000483576200048262000406565b5b5f620004928482850162000455565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200052557808604811115620004fd57620004fc6200049b565b5b60018516156200050d5780820291505b80810290506200051d85620004c8565b9450620004dd565b94509492505050565b5f826200053f576001905062000611565b816200054e575f905062000611565b81600181146200056757600281146200057257620005a8565b600191505062000611565b60ff8411156200058757620005866200049b565b5b8360020a915084821115620005a157620005a06200049b565b5b5062000611565b5060208310610133831016604e8410600b8410161715620005e25782820a905083811115620005dc57620005db6200049b565b5b62000611565b620005f18484846001620004d4565b925090508184048111156200060b576200060a6200049b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006398262000618565b9150620006468362000621565b9250620006757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200052e565b905092915050565b5f620006898262000618565b9150620006968362000618565b9250828202620006a68162000618565b91508282048414831517620006c057620006bf6200049b565b5b5092915050565b620006d28162000618565b82525050565b5f602082019050620006ed5f830184620006c7565b92915050565b611f6980620007015f395ff3fe60806040526004361061009f575f3560e01c8063359492471161006357806335949247146101a057806370a08231146101b65780638da5cb5b146101f257806395d89b411461021c578063a9059cbb14610246578063dd62ed3e14610282576100a6565b806306fdde03146100aa578063095ea7b3146100d457806318160ddd1461011057806323b872dd1461013a578063313ce56714610176576100a6565b366100a657005b5f80fd5b3480156100b5575f80fd5b506100be6102be565b6040516100cb91906114ed565b60405180910390f35b3480156100df575f80fd5b506100fa60048036038101906100f5919061159e565b6102fb565b60405161010791906115f6565b60405180910390f35b34801561011b575f80fd5b50610124610318565b604051610131919061161e565b60405180910390f35b348015610145575f80fd5b50610160600480360381019061015b9190611637565b61033a565b60405161016d91906115f6565b60405180910390f35b348015610181575f80fd5b5061018a61040e565b60405161019791906116a2565b60405180910390f35b3480156101ab575f80fd5b506101b4610416565b005b3480156101c1575f80fd5b506101dc60048036038101906101d791906116bb565b610564565b6040516101e9919061161e565b60405180910390f35b3480156101fd575f80fd5b506102066105aa565b60405161021391906116f5565b60405180910390f35b348015610227575f80fd5b506102306105d1565b60405161023d91906114ed565b60405180910390f35b348015610251575f80fd5b5061026c6004803603810190610267919061159e565b61060e565b60405161027991906115f6565b60405180910390f35b34801561028d575f80fd5b506102a860048036038101906102a3919061170e565b61062b565b6040516102b5919061161e565b60405180910390f35b60606040518060400160405280601f81526020017f4861727279506f747465724f62616d61536f6e69635472756d703639496e7500815250905090565b5f61030e6103076106ad565b84846106b4565b6001905092915050565b5f6009600a61032791906118a8565b620f424061033591906118f2565b905090565b5f610346848484610877565b610403846103526106ad565b6103fe85604051806060016040528060288152602001611f0c6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6103b56106ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461123a9092919063ffffffff16565b6106b4565b600190509392505050565b5f6009905090565b61041e6106ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a19061197d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5452554d50000000000000000000000000000000000000000000000000000000815250905090565b5f61062161061a6106ad565b8484610877565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071990611a0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078790611a99565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161086a919061161e565b60405180910390a3505050565b61087f6105aa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806108ea57506108bb6105aa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061093b575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061098c575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80610a015750600160045f9054906101000a900460ff1660ff16108015610a005750600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b15610ddb575f8060045f9054906101000a900460ff1660ff16118015610a5a5750610a2a6105aa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ab2575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610b04575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90508015610b29576001600460016101000a81548160ff021916908360ff1602179055505b610b798260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ca9610c5d82610c065760065f81548110610bd957610bd8611ab7565b5b905f5260205f2090600491828204019190066008029054906101000a900467ffffffffffffffff16610c44565b6006600381548110610c1b57610c1a611ab7565b5b905f5260205f2090600491828204019190066008029054906101000a900467ffffffffffffffff165b67ffffffffffffffff16846112e590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112e590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f9054906101000a900460ff1660ff16108015610d585750600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610dd5578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f81819054906101000a900460ff1680929190610dbb90611ae4565b91906101000a81548160ff021916908360ff160217905550505b506111d0565b5f60045f9054906101000a900460ff1660ff1611610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590611b56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390611be4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190611c72565b60405180910390fd5b5f8111610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390611d00565b60405180910390fd5b5f610fb86064610faa60065f81548110610f6957610f68611ab7565b5b905f5260205f2090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff168561134290919063ffffffff16565b6113b990919063ffffffff16565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461109a5761109760646110896006600460019054906101000a900460ff1660016110349190611d1e565b60ff168154811061104857611047611ab7565b5b905f5260205f2090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff168561134290919063ffffffff16565b6113b990919063ffffffff16565b90505b6110ea8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061118d611141828461129c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112e590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161122d919061161e565b60405180910390a3505050565b5f838311158290611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127891906114ed565b60405180910390fd5b505f838561128f9190611d52565b9050809150509392505050565b5f6112dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061123a565b905092915050565b5f8082846112f39190611d85565b905083811015611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f90611e02565b60405180910390fd5b8091505092915050565b5f808303611352575f90506113b3565b5f828461135f91906118f2565b905082848261136e9190611e4d565b146113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590611eed565b60405180910390fd5b809150505b92915050565b5f6113fa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611402565b905092915050565b5f8083118290611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f91906114ed565b60405180910390fd5b505f83856114569190611e4d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561149a57808201518184015260208101905061147f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114bf82611463565b6114c9818561146d565b93506114d981856020860161147d565b6114e2816114a5565b840191505092915050565b5f6020820190508181035f83015261150581846114b5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61153a82611511565b9050919050565b61154a81611530565b8114611554575f80fd5b50565b5f8135905061156581611541565b92915050565b5f819050919050565b61157d8161156b565b8114611587575f80fd5b50565b5f8135905061159881611574565b92915050565b5f80604083850312156115b4576115b361150d565b5b5f6115c185828601611557565b92505060206115d28582860161158a565b9150509250929050565b5f8115159050919050565b6115f0816115dc565b82525050565b5f6020820190506116095f8301846115e7565b92915050565b6116188161156b565b82525050565b5f6020820190506116315f83018461160f565b92915050565b5f805f6060848603121561164e5761164d61150d565b5b5f61165b86828701611557565b935050602061166c86828701611557565b925050604061167d8682870161158a565b9150509250925092565b5f60ff82169050919050565b61169c81611687565b82525050565b5f6020820190506116b55f830184611693565b92915050565b5f602082840312156116d0576116cf61150d565b5b5f6116dd84828501611557565b91505092915050565b6116ef81611530565b82525050565b5f6020820190506117085f8301846116e6565b92915050565b5f80604083850312156117245761172361150d565b5b5f61173185828601611557565b925050602061174285828601611557565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156117ce578086048111156117aa576117a961174c565b5b60018516156117b95780820291505b80810290506117c785611779565b945061178e565b94509492505050565b5f826117e657600190506118a1565b816117f3575f90506118a1565b8160018114611809576002811461181357611842565b60019150506118a1565b60ff8411156118255761182461174c565b5b8360020a91508482111561183c5761183b61174c565b5b506118a1565b5060208310610133831016604e8410600b84101617156118775782820a9050838111156118725761187161174c565b5b6118a1565b6118848484846001611785565b9250905081840481111561189b5761189a61174c565b5b81810290505b9392505050565b5f6118b28261156b565b91506118bd83611687565b92506118ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117d7565b905092915050565b5f6118fc8261156b565b91506119078361156b565b92508282026119158161156b565b9150828204841483151761192c5761192b61174c565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61196760208361146d565b915061197282611933565b602082019050919050565b5f6020820190508181035f8301526119948161195b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6119f560248361146d565b9150611a008261199b565b604082019050919050565b5f6020820190508181035f830152611a22816119e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611a8360228361146d565b9150611a8e82611a29565b604082019050919050565b5f6020820190508181035f830152611ab081611a77565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611aee82611687565b915060ff8203611b0157611b0061174c565b5b600182019050919050565b7f45524332303a2054726164696e672070616972206e6f7420666f756e640000005f82015250565b5f611b40601d8361146d565b9150611b4b82611b0c565b602082019050919050565b5f6020820190508181035f830152611b6d81611b34565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611bce60258361146d565b9150611bd982611b74565b604082019050919050565b5f6020820190508181035f830152611bfb81611bc2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611c5c60238361146d565b9150611c6782611c02565b604082019050919050565b5f6020820190508181035f830152611c8981611c50565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f611cea60298361146d565b9150611cf582611c90565b604082019050919050565b5f6020820190508181035f830152611d1781611cde565b9050919050565b5f611d2882611687565b9150611d3383611687565b9250828201905060ff811115611d4c57611d4b61174c565b5b92915050565b5f611d5c8261156b565b9150611d678361156b565b9250828203905081811115611d7f57611d7e61174c565b5b92915050565b5f611d8f8261156b565b9150611d9a8361156b565b9250828201905080821115611db257611db161174c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611dec601b8361146d565b9150611df782611db8565b602082019050919050565b5f6020820190508181035f830152611e1981611de0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611e578261156b565b9150611e628361156b565b925082611e7257611e71611e20565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f611ed760218361146d565b9150611ee282611e7d565b604082019050919050565b5f6020820190508181035f830152611f0481611ecb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f0a86cc0d21a7c19c219b35786e57dcaa9171aa225b13b0de0aefe2f2abb3e1564736f6c63430008140033000000000000000000000000c64a0d1f53f143bb2e304f2f43b5bf47d57be7ec