60806040523480156200001157600080fd5b506040516200214938038062002149833981810160405281019062000037919062000518565b6040518060400160405280600c81526020017f466f6c6c6f7720546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600681526020017f464f4c4c4f5700000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb929190620003c3565b508060049080519060200190620000d4929190620003c3565b505050620000f7620000eb6200017e60201b60201c565b6200018660201b60201c565b6000600560146101000a81548160ff0219169083151502179055506b204fce5e3e2502611000000081111562000164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015b90620005e6565b60405180910390fd5b6200017682826200024c60201b60201c565b505062000798565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b59062000658565b60405180910390fd5b620002d260008383620003b960201b60201c565b8060026000828254620002e69190620006a9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000399919062000717565b60405180910390a3620003b560008383620003be60201b60201c565b5050565b505050565b505050565b828054620003d19062000763565b90600052602060002090601f016020900481019282620003f5576000855562000441565b82601f106200041057805160ff191683800117855562000441565b8280016001018555821562000441579182015b828111156200044057825182559160200191906001019062000423565b5b50905062000450919062000454565b5090565b5b808211156200046f57600081600090555060010162000455565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004a58262000478565b9050919050565b620004b78162000498565b8114620004c357600080fd5b50565b600081519050620004d781620004ac565b92915050565b6000819050919050565b620004f281620004dd565b8114620004fe57600080fd5b50565b6000815190506200051281620004e7565b92915050565b6000806040838503121562000532576200053162000473565b5b60006200054285828601620004c6565b9250506020620005558582860162000501565b9150509250929050565b600082825260208201905092915050565b7f466f6c6c6f773a205072656d696e7420616d6f756e742069732067726561746560008201527f72207468616e2063617000000000000000000000000000000000000000000000602082015250565b6000620005ce602a836200055f565b9150620005db8262000570565b604082019050919050565b600060208201905081810360008301526200060181620005bf565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000640601f836200055f565b91506200064d8262000608565b602082019050919050565b60006020820190508181036000830152620006738162000631565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006b682620004dd565b9150620006c383620004dd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006fb57620006fa6200067a565b5b828201905092915050565b6200071181620004dd565b82525050565b60006020820190506200072e600083018462000706565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200077c57607f821691505b60208210810362000792576200079162000734565b5b50919050565b6119a180620007a86000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80635c975abb116100a257806395d89b411161007157806395d89b41146102be578063a457c2d7146102dc578063a9059cbb1461030c578063dd62ed3e1461033c578063f2fde38b1461036c5761010b565b80635c975abb1461024857806370a0823114610266578063715018a6146102965780638da5cb5b146102a05761010b565b806323b872dd116100de57806323b872dd1461019a578063313ce567146101ca57806339509351146101e857806340c10f19146102185761010b565b806306fdde0314610110578063095ea7b31461012e5780630cfccc831461015e57806318160ddd1461017c575b600080fd5b610118610388565b604051610125919061105c565b60405180910390f35b61014860048036038101906101439190611117565b61041a565b6040516101559190611172565b60405180910390f35b61016661043d565b604051610173919061119c565b60405180910390f35b610184610451565b604051610191919061119c565b60405180910390f35b6101b460048036038101906101af91906111b7565b61045b565b6040516101c19190611172565b60405180910390f35b6101d261048a565b6040516101df9190611226565b60405180910390f35b61020260048036038101906101fd9190611117565b610493565b60405161020f9190611172565b60405180910390f35b610232600480360381019061022d9190611117565b6104ca565b60405161023f9190611172565b60405180910390f35b610250610517565b60405161025d9190611172565b60405180910390f35b610280600480360381019061027b9190611241565b61052e565b60405161028d919061119c565b60405180910390f35b61029e610576565b005b6102a861058a565b6040516102b5919061127d565b60405180910390f35b6102c66105b4565b6040516102d3919061105c565b60405180910390f35b6102f660048036038101906102f19190611117565b610646565b6040516103039190611172565b60405180910390f35b61032660048036038101906103219190611117565b6106bd565b6040516103339190611172565b60405180910390f35b61035660048036038101906103519190611298565b6106e0565b604051610363919061119c565b60405180910390f35b61038660048036038101906103819190611241565b610767565b005b60606003805461039790611307565b80601f01602080910402602001604051908101604052809291908181526020018280546103c390611307565b80156104105780601f106103e557610100808354040283529160200191610410565b820191906000526020600020905b8154815290600101906020018083116103f357829003601f168201915b5050505050905090565b6000806104256107ea565b90506104328185856107f2565b600191505092915050565b60006b204fce5e3e25026110000000905090565b6000600254905090565b6000806104666107ea565b90506104738582856109bb565b61047e858585610a47565b60019150509392505050565b60006012905090565b60008061049e6107ea565b90506104bf8185856104b085896106e0565b6104ba9190611367565b6107f2565b600191505092915050565b60006104d4610a5f565b6b204fce5e3e25026110000000826104ea610451565b6104f49190611367565b1161050c576105038383610add565b60019050610511565b600090505b92915050565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61057e610a5f565b6105886000610c33565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105c390611307565b80601f01602080910402602001604051908101604052809291908181526020018280546105ef90611307565b801561063c5780601f106106115761010080835404028352916020019161063c565b820191906000526020600020905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b6000806106516107ea565b9050600061065f82866106e0565b9050838110156106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069b9061142f565b60405180910390fd5b6106b182868684036107f2565b60019250505092915050565b6000806106c86107ea565b90506106d5818585610a47565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61076f610a5f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d5906114c1565b60405180910390fd5b6107e781610c33565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085890611553565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c7906115e5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109ae919061119c565b60405180910390a3505050565b60006109c784846106e0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a415781811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90611651565b60405180910390fd5b610a4084848484036107f2565b5b50505050565b610a4f610cf9565b610a5a838383610d43565b505050565b610a676107ea565b73ffffffffffffffffffffffffffffffffffffffff16610a8561058a565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906116bd565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4390611729565b60405180910390fd5b610b5860008383610fb9565b8060026000828254610b6a9190611367565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1b919061119c565b60405180910390a3610c2f60008383610fbe565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610d01610517565b15610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3890611795565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da990611827565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e18906118b9565b60405180910390fd5b610e2c838383610fb9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea99061194b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fa0919061119c565b60405180910390a3610fb3848484610fbe565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ffd578082015181840152602081019050610fe2565b8381111561100c576000848401525b50505050565b6000601f19601f8301169050919050565b600061102e82610fc3565b6110388185610fce565b9350611048818560208601610fdf565b61105181611012565b840191505092915050565b600060208201905081810360008301526110768184611023565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110ae82611083565b9050919050565b6110be816110a3565b81146110c957600080fd5b50565b6000813590506110db816110b5565b92915050565b6000819050919050565b6110f4816110e1565b81146110ff57600080fd5b50565b600081359050611111816110eb565b92915050565b6000806040838503121561112e5761112d61107e565b5b600061113c858286016110cc565b925050602061114d85828601611102565b9150509250929050565b60008115159050919050565b61116c81611157565b82525050565b60006020820190506111876000830184611163565b92915050565b611196816110e1565b82525050565b60006020820190506111b1600083018461118d565b92915050565b6000806000606084860312156111d0576111cf61107e565b5b60006111de868287016110cc565b93505060206111ef868287016110cc565b925050604061120086828701611102565b9150509250925092565b600060ff82169050919050565b6112208161120a565b82525050565b600060208201905061123b6000830184611217565b92915050565b6000602082840312156112575761125661107e565b5b6000611265848285016110cc565b91505092915050565b611277816110a3565b82525050565b6000602082019050611292600083018461126e565b92915050565b600080604083850312156112af576112ae61107e565b5b60006112bd858286016110cc565b92505060206112ce858286016110cc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061131f57607f821691505b602082108103611332576113316112d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611372826110e1565b915061137d836110e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113b2576113b1611338565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611419602583610fce565b9150611424826113bd565b604082019050919050565b600060208201905081810360008301526114488161140c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006114ab602683610fce565b91506114b68261144f565b604082019050919050565b600060208201905081810360008301526114da8161149e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061153d602483610fce565b9150611548826114e1565b604082019050919050565b6000602082019050818103600083015261156c81611530565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006115cf602283610fce565b91506115da82611573565b604082019050919050565b600060208201905081810360008301526115fe816115c2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061163b601d83610fce565b915061164682611605565b602082019050919050565b6000602082019050818103600083015261166a8161162e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006116a7602083610fce565b91506116b282611671565b602082019050919050565b600060208201905081810360008301526116d68161169a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611713601f83610fce565b915061171e826116dd565b602082019050919050565b6000602082019050818103600083015261174281611706565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061177f601083610fce565b915061178a82611749565b602082019050919050565b600060208201905081810360008301526117ae81611772565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611811602583610fce565b915061181c826117b5565b604082019050919050565b6000602082019050818103600083015261184081611804565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006118a3602383610fce565b91506118ae82611847565b604082019050919050565b600060208201905081810360008301526118d281611896565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611935602683610fce565b9150611940826118d9565b604082019050919050565b6000602082019050818103600083015261196481611928565b905091905056fea2646970667358221220ec2f1240568bb27b4c5c0071ef47238a131baa3426180dc9aca7101f1aaf8cc964736f6c634300080d00330000000000000000000000008d939a98bb57e0c1c3f36c2277d5b5219e6436bc000000000000000000000000000000000000000000a56fa5b99019a5c8000000