60806040523480156200001157600080fd5b506040518060400160405280600881526020017f5a656e546f6b656e0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5a454e000000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620005d2565b508060049081620000a19190620005d2565b505050620000c4620000b86200010a60201b60201c565b6200011260201b60201c565b6200010433620000d9620001d860201b60201c565b600a620000e7919062000849565b63091e9840620000f891906200089a565b620001e160201b60201c565b620009d1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000253576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024a9062000946565b60405180910390fd5b62000267600083836200034e60201b60201c565b80600260008282546200027b919062000968565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032e9190620009b4565b60405180910390a36200034a600083836200035360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003da57607f821691505b602082108103620003f057620003ef62000392565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041b565b6200046686836200041b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b3620004ad620004a7846200047e565b62000488565b6200047e565b9050919050565b6000819050919050565b620004cf8362000492565b620004e7620004de82620004ba565b84845462000428565b825550505050565b600090565b620004fe620004ef565b6200050b818484620004c4565b505050565b5b81811015620005335762000527600082620004f4565b60018101905062000511565b5050565b601f82111562000582576200054c81620003f6565b62000557846200040b565b8101602085101562000567578190505b6200057f62000576856200040b565b83018262000510565b50505b505050565b600082821c905092915050565b6000620005a76000198460080262000587565b1980831691505092915050565b6000620005c2838362000594565b9150826002028217905092915050565b620005dd8262000358565b67ffffffffffffffff811115620005f957620005f862000363565b5b620006058254620003c1565b6200061282828562000537565b600060209050601f8311600181146200064a576000841562000635578287015190505b620006418582620005b4565b865550620006b1565b601f1984166200065a86620003f6565b60005b8281101562000684578489015182556001820191506020850194506020810190506200065d565b86831015620006a45784890151620006a0601f89168262000594565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000747578086048111156200071f576200071e620006b9565b5b60018516156200072f5780820291505b80810290506200073f85620006e8565b9450620006ff565b94509492505050565b60008262000762576001905062000835565b8162000772576000905062000835565b81600181146200078b57600281146200079657620007cc565b600191505062000835565b60ff841115620007ab57620007aa620006b9565b5b8360020a915084821115620007c557620007c4620006b9565b5b5062000835565b5060208310610133831016604e8410600b8410161715620008065782820a9050838111156200080057620007ff620006b9565b5b62000835565b620008158484846001620006f5565b925090508184048111156200082f576200082e620006b9565b5b81810290505b9392505050565b600060ff82169050919050565b600062000856826200047e565b915062000863836200083c565b9250620008927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000750565b905092915050565b6000620008a7826200047e565b9150620008b4836200047e565b9250828202620008c4816200047e565b91508282048414831517620008de57620008dd620006b9565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200092e601f83620008e5565b91506200093b82620008f6565b602082019050919050565b6000602082019050818103600083015262000961816200091f565b9050919050565b600062000975826200047e565b915062000982836200047e565b92508282019050808211156200099d576200099c620006b9565b5b92915050565b620009ae816200047e565b82525050565b6000602082019050620009cb6000830184620009a3565b92915050565b61195880620009e16000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610288578063a9059cbb146102b8578063dd62ed3e146102e8578063f2fde38b14610318576100f5565b806370a082311461020057806379cc6790146102305780638da5cb5b1461024c57806395d89b411461026a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806342966c68146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610334565b60405161010f9190610fbc565b60405180910390f35b610132600480360381019061012d9190611077565b6103c6565b60405161013f91906110d2565b60405180910390f35b6101506103e9565b60405161015d91906110fc565b60405180910390f35b610180600480360381019061017b9190611117565b6103f3565b60405161018d91906110d2565b60405180910390f35b61019e610422565b6040516101ab9190611186565b60405180910390f35b6101ce60048036038101906101c99190611077565b61042b565b6040516101db91906110d2565b60405180910390f35b6101fe60048036038101906101f991906111a1565b610462565b005b61021a600480360381019061021591906111ce565b610476565b60405161022791906110fc565b60405180910390f35b61024a60048036038101906102459190611077565b6104be565b005b6102546104de565b604051610261919061120a565b60405180910390f35b610272610508565b60405161027f9190610fbc565b60405180910390f35b6102a2600480360381019061029d9190611077565b61059a565b6040516102af91906110d2565b60405180910390f35b6102d260048036038101906102cd9190611077565b610611565b6040516102df91906110d2565b60405180910390f35b61030260048036038101906102fd9190611225565b610634565b60405161030f91906110fc565b60405180910390f35b610332600480360381019061032d91906111ce565b6106bb565b005b60606003805461034390611294565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90611294565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000806103d161073e565b90506103de818585610746565b600191505092915050565b6000600254905090565b6000806103fe61073e565b905061040b85828561090f565b61041685858561099b565b60019150509392505050565b60006012905090565b60008061043661073e565b90506104578185856104488589610634565b61045291906112f4565b610746565b600191505092915050565b61047361046d61073e565b82610c11565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104d0826104ca61073e565b8361090f565b6104da8282610c11565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461051790611294565b80601f016020809104026020016040519081016040528092919081815260200182805461054390611294565b80156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b5050505050905090565b6000806105a561073e565b905060006105b38286610634565b9050838110156105f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ef9061139a565b60405180910390fd5b6106058286868403610746565b60019250505092915050565b60008061061c61073e565b905061062981858561099b565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106c3610dde565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107299061142c565b60405180910390fd5b61073b81610e5c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ac906114be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90611550565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090291906110fc565b60405180910390a3505050565b600061091b8484610634565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109955781811015610987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097e906115bc565b60405180910390fd5b6109948484848403610746565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a019061164e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a70906116e0565b60405180910390fd5b610a84838383610f22565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190611772565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bf891906110fc565b60405180910390a3610c0b848484610f27565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790611804565b60405180910390fd5b610c8c82600083610f22565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990611896565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dc591906110fc565b60405180910390a3610dd983600084610f27565b505050565b610de661073e565b73ffffffffffffffffffffffffffffffffffffffff16610e046104de565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611902565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f66578082015181840152602081019050610f4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f8e82610f2c565b610f988185610f37565b9350610fa8818560208601610f48565b610fb181610f72565b840191505092915050565b60006020820190508181036000830152610fd68184610f83565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061100e82610fe3565b9050919050565b61101e81611003565b811461102957600080fd5b50565b60008135905061103b81611015565b92915050565b6000819050919050565b61105481611041565b811461105f57600080fd5b50565b6000813590506110718161104b565b92915050565b6000806040838503121561108e5761108d610fde565b5b600061109c8582860161102c565b92505060206110ad85828601611062565b9150509250929050565b60008115159050919050565b6110cc816110b7565b82525050565b60006020820190506110e760008301846110c3565b92915050565b6110f681611041565b82525050565b600060208201905061111160008301846110ed565b92915050565b6000806000606084860312156111305761112f610fde565b5b600061113e8682870161102c565b935050602061114f8682870161102c565b925050604061116086828701611062565b9150509250925092565b600060ff82169050919050565b6111808161116a565b82525050565b600060208201905061119b6000830184611177565b92915050565b6000602082840312156111b7576111b6610fde565b5b60006111c584828501611062565b91505092915050565b6000602082840312156111e4576111e3610fde565b5b60006111f28482850161102c565b91505092915050565b61120481611003565b82525050565b600060208201905061121f60008301846111fb565b92915050565b6000806040838503121561123c5761123b610fde565b5b600061124a8582860161102c565b925050602061125b8582860161102c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112ac57607f821691505b6020821081036112bf576112be611265565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112ff82611041565b915061130a83611041565b9250828201905080821115611322576113216112c5565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611384602583610f37565b915061138f82611328565b604082019050919050565b600060208201905081810360008301526113b381611377565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611416602683610f37565b9150611421826113ba565b604082019050919050565b6000602082019050818103600083015261144581611409565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006114a8602483610f37565b91506114b38261144c565b604082019050919050565b600060208201905081810360008301526114d78161149b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061153a602283610f37565b9150611545826114de565b604082019050919050565b600060208201905081810360008301526115698161152d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006115a6601d83610f37565b91506115b182611570565b602082019050919050565b600060208201905081810360008301526115d581611599565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611638602583610f37565b9150611643826115dc565b604082019050919050565b600060208201905081810360008301526116678161162b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006116ca602383610f37565b91506116d58261166e565b604082019050919050565b600060208201905081810360008301526116f9816116bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061175c602683610f37565b915061176782611700565b604082019050919050565b6000602082019050818103600083015261178b8161174f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006117ee602183610f37565b91506117f982611792565b604082019050919050565b6000602082019050818103600083015261181d816117e1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611880602283610f37565b915061188b82611824565b604082019050919050565b600060208201905081810360008301526118af81611873565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118ec602083610f37565b91506118f7826118b6565b602082019050919050565b6000602082019050818103600083015261191b816118df565b905091905056fea2646970667358221220e1db2099acdcc0e6c0e8600bae2b5b6a1c02df95090829fd878159f9b6e4596e64736f6c63430008130033