60806040526040518060400160405280601181526020017f476f6420426c65737320416d6572696361000000000000000000000000000000815250600190816200004a9190620005e4565b506040518060400160405280600781526020017f414d45524943410000000000000000000000000000000000000000000000000081525060029081620000919190620005e4565b50600960035f6101000a81548160ff021916908360ff16021790555060035f9054906101000a900460ff1660ff166001620000cd919062000845565b670de0b6b3a7640000620000e2919062000895565b6004557341c877f883c85886b1f2f2693156e4f40ebc022360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506651b660cdd580006009556001600a5f6101000a81548160ff0219169083151502179055503480156200016a575f80fd5b505f6200017c6200037960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f620002296200037960201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360045460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200036a9190620008f0565b60405180910390a3506200090b565b5f33905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003fc57607f821691505b602082108103620004125762000411620003b7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000439565b62000482868362000439565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004cc620004c6620004c0846200049a565b620004a3565b6200049a565b9050919050565b5f819050919050565b620004e783620004ac565b620004ff620004f682620004d3565b84845462000445565b825550505050565b5f90565b6200051562000507565b62000522818484620004dc565b505050565b5b8181101562000549576200053d5f826200050b565b60018101905062000528565b5050565b601f8211156200059857620005628162000418565b6200056d846200042a565b810160208510156200057d578190505b620005956200058c856200042a565b83018262000527565b50505b505050565b5f82821c905092915050565b5f620005ba5f19846008026200059d565b1980831691505092915050565b5f620005d48383620005a9565b9150826002028217905092915050565b620005ef8262000380565b67ffffffffffffffff8111156200060b576200060a6200038a565b5b620006178254620003e4565b620006248282856200054d565b5f60209050601f8311600181146200065a575f841562000645578287015190505b620006518582620005c7565b865550620006c0565b601f1984166200066a8662000418565b5f5b8281101562000693578489015182556001820191506020850194506020810190506200066c565b86831015620006b35784890151620006af601f891682620005a9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000752578086048111156200072a5762000729620006c8565b5b60018516156200073a5780820291505b80810290506200074a85620006f5565b94506200070a565b94509492505050565b5f826200076c57600190506200083e565b816200077b575f90506200083e565b81600181146200079457600281146200079f57620007d5565b60019150506200083e565b60ff841115620007b457620007b3620006c8565b5b8360020a915084821115620007ce57620007cd620006c8565b5b506200083e565b5060208310610133831016604e8410600b84101617156200080f5782820a905083811115620008095762000808620006c8565b5b6200083e565b6200081e848484600162000701565b92509050818404811115620008385762000837620006c8565b5b81810290505b9392505050565b5f62000851826200049a565b91506200085e836200049a565b92506200088d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200075b565b905092915050565b5f620008a1826200049a565b9150620008ae836200049a565b9250828202620008be816200049a565b91508282048414831517620008d857620008d7620006c8565b5b5092915050565b620008ea816200049a565b82525050565b5f602082019050620009055f830184620008df565b92915050565b6119f480620009195f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c8063715018a611610095578063a9059cbb11610064578063a9059cbb1461029c578063aac5d69f146102cc578063dd62ed3e146102e8578063f4cb7a5714610318576100fe565b8063715018a6146102265780638da5cb5b1461023057806395d89b411461024e578063a457c2d71461026c576100fe565b8063313ce567116100d1578063313ce5671461019e57806339509351146101bc57806353856705146101ec57806370a08231146101f6576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd1461015057806323b872dd1461016e575b5f80fd5b61010a610322565b6040516101179190611240565b60405180910390f35b61013a600480360381019061013591906112f1565b6103b2565b6040516101479190611349565b60405180910390f35b6101586103c8565b6040516101659190611371565b60405180910390f35b6101886004803603810190610183919061138a565b6103d1565b6040516101959190611349565b60405180910390f35b6101a66104bf565b6040516101b391906113f5565b60405180910390f35b6101d660048036038101906101d191906112f1565b6104d4565b6040516101e39190611349565b60405180910390f35b6101f4610574565b005b610210600480360381019061020b919061140e565b610624565b60405161021d9190611371565b60405180910390f35b61022e61066a565b005b6102386107b8565b6040516102459190611448565b60405180910390f35b6102566107df565b6040516102639190611240565b60405180910390f35b610286600480360381019061028191906112f1565b61086f565b6040516102939190611349565b60405180910390f35b6102b660048036038101906102b191906112f1565b61090f565b6040516102c39190611349565b60405180910390f35b6102e660048036038101906102e19190611461565b610967565b005b61030260048036038101906102fd919061148c565b610a47565b60405161030f9190611371565b60405180910390f35b610320610ac9565b005b606060018054610331906114f7565b80601f016020809104026020016040519081016040528092919081815260200182805461035d906114f7565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6103be338484610b78565b6001905092915050565b5f600454905090565b5f808211610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611571565b60405180910390fd5b61041f848484610c5f565b6104b484336104af8560075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461102290919063ffffffff16565b610b78565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b5f61056a33846105658560075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461107f90919063ffffffff16565b610b78565b6001905092915050565b61057c6110dc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff906115d9565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106726110dc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f5906115d9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546107ee906114f7565b80601f016020809104026020016040519081016040528092919081815260200182805461081a906114f7565b80156108655780601f1061083c57610100808354040283529160200191610865565b820191905f5260205f20905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b5f61090533846109008560075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461102290919063ffffffff16565b610b78565b6001905092915050565b5f808211610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094990611571565b60405180910390fd5b61095d338484610c5f565b6001905092915050565b61096f6110dc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906115d9565b60405180910390fd5b5f8111610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490611641565b60405180910390fd5b8060098190555050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ad16110dc565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b54906115d9565b60405180910390fd5b5f600a5f6101000a81548160ff021916908315150217905550565b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c529190611371565b60405180910390a3505050565b8281600a5f9054906101000a900460ff161580610cbb575060095481111580610cba5750610c8b6107b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf1906116a9565b60405180910390fd5b5f610d216064610d135f876110e390919063ffffffff16565b61115a90919063ffffffff16565b90505f610d37828661102290919063ffffffff16565b9050610d898560065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461102290919063ffffffff16565b60065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e1a8160065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461107f90919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ecc8260065f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461107f90919063ffffffff16565b60065f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f8b9190611371565b60405180910390a360085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110119190611371565b60405180910390a350505050505050565b5f82821115611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d90611711565b60405180910390fd5b5f8284611073919061175c565b90508091505092915050565b5f80828461108d919061178f565b9050838110156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c99061180c565b60405180910390fd5b8091505092915050565b5f33905090565b5f8083036110f3575f9050611154565b5f8284611100919061182a565b905082848261110f9190611898565b1461114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690611938565b60405180910390fd5b809150505b92915050565b5f80821161119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906119a0565b60405180910390fd5b5f82846111aa9190611898565b90508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156111ed5780820151818401526020810190506111d2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611212826111b6565b61121c81856111c0565b935061122c8185602086016111d0565b611235816111f8565b840191505092915050565b5f6020820190508181035f8301526112588184611208565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61128d82611264565b9050919050565b61129d81611283565b81146112a7575f80fd5b50565b5f813590506112b881611294565b92915050565b5f819050919050565b6112d0816112be565b81146112da575f80fd5b50565b5f813590506112eb816112c7565b92915050565b5f806040838503121561130757611306611260565b5b5f611314858286016112aa565b9250506020611325858286016112dd565b9150509250929050565b5f8115159050919050565b6113438161132f565b82525050565b5f60208201905061135c5f83018461133a565b92915050565b61136b816112be565b82525050565b5f6020820190506113845f830184611362565b92915050565b5f805f606084860312156113a1576113a0611260565b5b5f6113ae868287016112aa565b93505060206113bf868287016112aa565b92505060406113d0868287016112dd565b9150509250925092565b5f60ff82169050919050565b6113ef816113da565b82525050565b5f6020820190506114085f8301846113e6565b92915050565b5f6020828403121561142357611422611260565b5b5f611430848285016112aa565b91505092915050565b61144281611283565b82525050565b5f60208201905061145b5f830184611439565b92915050565b5f6020828403121561147657611475611260565b5b5f611483848285016112dd565b91505092915050565b5f80604083850312156114a2576114a1611260565b5b5f6114af858286016112aa565b92505060206114c0858286016112aa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061150e57607f821691505b602082108103611521576115206114ca565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f61155b6020836111c0565b915061156682611527565b602082019050919050565b5f6020820190508181035f8301526115888161154f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6115c36020836111c0565b91506115ce8261158f565b602082019050919050565b5f6020820190508181035f8301526115f0816115b7565b9050919050565b7f4c696d6974206d7573742062652067726561746572207468616e207a65726f005f82015250565b5f61162b601f836111c0565b9150611636826115f7565b602082019050919050565b5f6020820190508181035f8301526116588161161f565b9050919050565b7f427579206c696d697420657863656564656400000000000000000000000000005f82015250565b5f6116936012836111c0565b915061169e8261165f565b602082019050919050565b5f6020820190508181035f8301526116c081611687565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f6116fb601e836111c0565b9150611706826116c7565b602082019050919050565b5f6020820190508181035f830152611728816116ef565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611766826112be565b9150611771836112be565b92508282039050818111156117895761178861172f565b5b92915050565b5f611799826112be565b91506117a4836112be565b92508282019050808211156117bc576117bb61172f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6117f6601b836111c0565b9150611801826117c2565b602082019050919050565b5f6020820190508181035f830152611823816117ea565b9050919050565b5f611834826112be565b915061183f836112be565b925082820261184d816112be565b915082820484148315176118645761186361172f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6118a2826112be565b91506118ad836112be565b9250826118bd576118bc61186b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119226021836111c0565b915061192d826118c8565b604082019050919050565b5f6020820190508181035f83015261194f81611916565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f61198a601a836111c0565b915061199582611956565b602082019050919050565b5f6020820190508181035f8301526119b78161197e565b905091905056fea26469706673582212206e05ab17d2ccc33432f7097077f4ac7a8c16900f2d53d5817a49f99bc4e5f8b864736f6c63430008140033