0x6080604052620000146200016b60201b60201c565b600a62000022919062000553565b6207a120620000329190620005a4565b600755620000456200016b60201b60201c565b600a62000053919062000553565b62989680620000639190620005a4565b6008553480156200007357600080fd5b506040518060400160405280600a81526020017f467265652057696c6c79000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4652454557494c4c5900000000000000000000000000000000000000000000008152508160039081620000f191906200085f565b5080600490816200010391906200085f565b505050620001266200011a6200017460201b60201c565b6200017c60201b60201c565b62000165336200013b6200016b60201b60201c565b600a62000149919062000553565b62989680620001599190620005a4565b6200024260201b60201c565b62000a32565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ab90620009a7565b60405180910390fd5b620002c860008383620003af60201b60201c565b8060026000828254620002dc9190620009c9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038f919062000a15565b60405180910390a3620003ab60008383620003b460201b60201c565b5050565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000447578086048111156200041f576200041e620003b9565b5b60018516156200042f5780820291505b80810290506200043f85620003e8565b9450620003ff565b94509492505050565b60008262000462576001905062000535565b8162000472576000905062000535565b81600181146200048b57600281146200049657620004cc565b600191505062000535565b60ff841115620004ab57620004aa620003b9565b5b8360020a915084821115620004c557620004c4620003b9565b5b5062000535565b5060208310610133831016604e8410600b8410161715620005065782820a9050838111156200050057620004ff620003b9565b5b62000535565b620005158484846001620003f5565b925090508184048111156200052f576200052e620003b9565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000560826200053c565b91506200056d8362000546565b92506200059c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000450565b905092915050565b6000620005b1826200053c565b9150620005be836200053c565b9250828202620005ce816200053c565b91508282048414831517620005e857620005e7620003b9565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067157607f821691505b60208210810362000687576200068662000629565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006b2565b620006fd8683620006b2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620007406200073a62000734846200053c565b62000715565b6200053c565b9050919050565b6000819050919050565b6200075c836200071f565b620007746200076b8262000747565b848454620006bf565b825550505050565b600090565b6200078b6200077c565b6200079881848462000751565b505050565b5b81811015620007c057620007b460008262000781565b6001810190506200079e565b5050565b601f8211156200080f57620007d9816200068d565b620007e484620006a2565b81016020851015620007f4578190505b6200080c6200080385620006a2565b8301826200079d565b50505b505050565b600082821c905092915050565b6000620008346000198460080262000814565b1980831691505092915050565b60006200084f838362000821565b9150826002028217905092915050565b6200086a82620005ef565b67ffffffffffffffff811115620008865762000885620005fa565b5b62000892825462000658565b6200089f828285620007c4565b600060209050601f831160018114620008d75760008415620008c2578287015190505b620008ce858262000841565b8655506200093e565b601f198416620008e7866200068d565b60005b828110156200091157848901518255600182019150602085019450602081019050620008ea565b868310156200093157848901516200092d601f89168262000821565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200098f601f8362000946565b91506200099c8262000957565b602082019050919050565b60006020820190508181036000830152620009c28162000980565b9050919050565b6000620009d6826200053c565b9150620009e3836200053c565b9250828201905080821115620009fe57620009fd620003b9565b5b92915050565b62000a0f816200053c565b82525050565b600060208201905062000a2c600083018462000a04565b92915050565b6118558062000a426000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a257806395d89b411161007157806395d89b4114610296578063a457c2d7146102b4578063a9059cbb146102e4578063dd62ed3e14610314578063f2fde38b146103445761010b565b806370a0823114610220578063715018a6146102505780638da5cb5b1461025a5780638f9a55c0146102785761010b565b806323b872dd116100de57806323b872dd14610198578063313ce567146101c857806339509351146101e657806362256589146102165761010b565b806306fdde031461011057806307980cb91461012e578063095ea7b31461014a57806318160ddd1461017a575b600080fd5b610118610360565b6040516101259190610f9e565b60405180910390f35b61014860048036038101906101439190611023565b6103f2565b005b610164600480360381019061015f9190611086565b61043e565b60405161017191906110e1565b60405180910390f35b610182610461565b60405161018f919061110b565b60405180910390f35b6101b260048036038101906101ad9190611126565b61046b565b6040516101bf91906110e1565b60405180910390f35b6101d061049a565b6040516101dd9190611195565b60405180910390f35b61020060048036038101906101fb9190611086565b6104a3565b60405161020d91906110e1565b60405180910390f35b61021e6104da565b005b61023a60048036038101906102359190611023565b6104ed565b604051610247919061110b565b60405180910390f35b610258610535565b005b610262610549565b60405161026f91906111bf565b60405180910390f35b610280610573565b60405161028d919061110b565b60405180910390f35b61029e610579565b6040516102ab9190610f9e565b60405180910390f35b6102ce60048036038101906102c99190611086565b61060b565b6040516102db91906110e1565b60405180910390f35b6102fe60048036038101906102f99190611086565b610682565b60405161030b91906110e1565b60405180910390f35b61032e600480360381019061032991906111da565b6106a5565b60405161033b919061110b565b60405180910390f35b61035e60048036038101906103599190611023565b61072c565b005b60606003805461036f90611249565b80601f016020809104026020016040519081016040528092919081815260200182805461039b90611249565b80156103e85780601f106103bd576101008083540402835291602001916103e8565b820191906000526020600020905b8154815290600101906020018083116103cb57829003601f168201915b5050505050905090565b6103fa6107af565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061044961082d565b9050610456818585610835565b600191505092915050565b6000600254905090565b60008061047661082d565b90506104838582856109fe565b61048e858585610a8a565b60019150509392505050565b60006012905090565b6000806104ae61082d565b90506104cf8185856104c085896106a5565b6104ca91906112a9565b610835565b600191505092915050565b6104e26107af565b600854600781905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61053d6107af565b6105476000610bc8565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606004805461058890611249565b80601f01602080910402602001604051908101604052809291908181526020018280546105b490611249565b80156106015780601f106105d657610100808354040283529160200191610601565b820191906000526020600020905b8154815290600101906020018083116105e457829003601f168201915b5050505050905090565b60008061061661082d565b9050600061062482866106a5565b905083811015610669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106609061134f565b60405180910390fd5b6106768286868403610835565b60019250505092915050565b60008061068d61082d565b905061069a818585610a8a565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107346107af565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a906113e1565b60405180910390fd5b6107ac81610bc8565b50565b6107b761082d565b73ffffffffffffffffffffffffffffffffffffffff166107d5610549565b73ffffffffffffffffffffffffffffffffffffffff161461082b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108229061144d565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b906114df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90611571565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109f1919061110b565b60405180910390a3505050565b6000610a0a84846106a5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a845781811015610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d906115dd565b60405180910390fd5b610a838484848403610835565b5b50505050565b610a92610549565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610b005750610ad0610549565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610b5a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610bb85760075481610b6c846104ed565b610b7691906112a9565b1115610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90611649565b60405180910390fd5b5b610bc3838383610c8e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906116db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d639061176d565b60405180910390fd5b610d77838383610f04565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df4906117ff565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eeb919061110b565b60405180910390a3610efe848484610f09565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f48578082015181840152602081019050610f2d565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f7082610f0e565b610f7a8185610f19565b9350610f8a818560208601610f2a565b610f9381610f54565b840191505092915050565b60006020820190508181036000830152610fb88184610f65565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ff082610fc5565b9050919050565b61100081610fe5565b811461100b57600080fd5b50565b60008135905061101d81610ff7565b92915050565b60006020828403121561103957611038610fc0565b5b60006110478482850161100e565b91505092915050565b6000819050919050565b61106381611050565b811461106e57600080fd5b50565b6000813590506110808161105a565b92915050565b6000806040838503121561109d5761109c610fc0565b5b60006110ab8582860161100e565b92505060206110bc85828601611071565b9150509250929050565b60008115159050919050565b6110db816110c6565b82525050565b60006020820190506110f660008301846110d2565b92915050565b61110581611050565b82525050565b600060208201905061112060008301846110fc565b92915050565b60008060006060848603121561113f5761113e610fc0565b5b600061114d8682870161100e565b935050602061115e8682870161100e565b925050604061116f86828701611071565b9150509250925092565b600060ff82169050919050565b61118f81611179565b82525050565b60006020820190506111aa6000830184611186565b92915050565b6111b981610fe5565b82525050565b60006020820190506111d460008301846111b0565b92915050565b600080604083850312156111f1576111f0610fc0565b5b60006111ff8582860161100e565b92505060206112108582860161100e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061126157607f821691505b6020821081036112745761127361121a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112b482611050565b91506112bf83611050565b92508282019050808211156112d7576112d661127a565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611339602583610f19565b9150611344826112dd565b604082019050919050565b600060208201905081810360008301526113688161132c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006113cb602683610f19565b91506113d68261136f565b604082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611437602083610f19565b915061144282611401565b602082019050919050565b600060208201905081810360008301526114668161142a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006114c9602483610f19565b91506114d48261146d565b604082019050919050565b600060208201905081810360008301526114f8816114bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061155b602283610f19565b9150611566826114ff565b604082019050919050565b6000602082019050818103600083015261158a8161154e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006115c7601d83610f19565b91506115d282611591565b602082019050919050565b600060208201905081810360008301526115f6816115ba565b9050919050565b7f4d61782077616c6c6574206c696d697400000000000000000000000000000000600082015250565b6000611633601083610f19565b915061163e826115fd565b602082019050919050565b6000602082019050818103600083015261166281611626565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006116c5602583610f19565b91506116d082611669565b604082019050919050565b600060208201905081810360008301526116f4816116b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611757602383610f19565b9150611762826116fb565b604082019050919050565b600060208201905081810360008301526117868161174a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006117e9602683610f19565b91506117f48261178d565b604082019050919050565b60006020820190508181036000830152611818816117dc565b905091905056fea2646970667358221220566e1819e1ae7e4c1287db00ea6b3860757b461ee6ee11d6cd4861020429397964736f6c63430008120033