60806040526040518060400160405280600c81526020017f4c6f79616c7479204c6162730000000000000000000000000000000000000000815250600090816200004a9190620003d4565b506040518060400160405280600781526020017f4c4f59414c54590000000000000000000000000000000000000000000000000081525060019081620000919190620003d4565b506c06f125563f59f382da700000006002556012600360006101000a81548160ff021916908360ff160217905550348015620000cc57600080fd5b5033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004bb565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001dc57607f821691505b602082108103620001f257620001f162000194565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200025c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200021d565b6200026886836200021d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002b5620002af620002a98462000280565b6200028a565b62000280565b9050919050565b6000819050919050565b620002d18362000294565b620002e9620002e082620002bc565b8484546200022a565b825550505050565b600090565b62000300620002f1565b6200030d818484620002c6565b505050565b5b81811015620003355762000329600082620002f6565b60018101905062000313565b5050565b601f82111562000384576200034e81620001f8565b62000359846200020d565b8101602085101562000369578190505b6200038162000378856200020d565b83018262000312565b50505b505050565b600082821c905092915050565b6000620003a96000198460080262000389565b1980831691505092915050565b6000620003c4838362000396565b9150826002028217905092915050565b620003df826200015a565b67ffffffffffffffff811115620003fb57620003fa62000165565b5b620004078254620001c3565b6200041482828562000339565b600060209050601f8311600181146200044c576000841562000437578287015190505b620004438582620003b6565b865550620004b3565b601f1984166200045c86620001f8565b60005b8281101562000486578489015182556001820191506020850194506020810190506200045f565b86831015620004a65784890151620004a2601f89168262000396565b8355505b6001600288020188555050505b505050505050565b61162c80620004cb6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063537df3b61161008c57806390683e8c1161006657806390683e8c1461020057806395d89b4114610230578063a9059cbb1461024e578063dd62ed3e1461027e576100cf565b8063537df3b6146101aa57806370a08231146101c6578063715018a6146101f6576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce5671461017057806344337ea11461018e575b600080fd5b6100dc6102ae565b6040516100e99190611045565b60405180910390f35b61010c60048036038101906101079190611100565b61033c565b604051610119919061115b565b60405180910390f35b61012a61042e565b6040516101379190611185565b60405180910390f35b61015a600480360381019061015591906111a0565b610434565b604051610167919061115b565b60405180910390f35b6101786107b3565b604051610185919061120f565b60405180910390f35b6101a860048036038101906101a3919061122a565b6107c6565b005b6101c460048036038101906101bf919061122a565b61094a565b005b6101e060048036038101906101db919061122a565b610a84565b6040516101ed9190611185565b60405180910390f35b6101fe610acd565b005b61021a6004803603810190610215919061122a565b610c1e565b604051610227919061115b565b60405180910390f35b610238610c74565b6040516102459190611045565b60405180910390f35b61026860048036038101906102639190611100565b610d02565b604051610275919061115b565b60405180910390f35b61029860048036038101906102939190611257565b610f2e565b6040516102a59190611185565b60405180910390f35b600080546102bb906112c6565b80601f01602080910402602001604051908101604052809291908181526020018280546102e7906112c6565b80156103345780601f1061030957610100808354040283529160200191610334565b820191906000526020600020905b81548152906001019060200180831161031757829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161041c9190611185565b60405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156104b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104af90611343565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906113af565b60405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fb9061141b565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610653919061146a565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a9919061149e565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461073c919061146a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107a09190611185565b60405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061086157507309ac925c7520ccc5f1b6b508d104bee95a3f2c2173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089790611544565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac600160405161093f919061115b565b60405180910390a250565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906115d6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac6000604051610a79919061115b565b60405180910390a250565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b54906115d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60018054610c81906112c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cad906112c6565b8015610cfa5780601f10610ccf57610100808354040283529160200191610cfa565b820191906000526020600020905b815481529060010190602001808311610cdd57829003601f168201915b505050505081565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611343565b60405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a9061141b565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e62919061146a565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610eb8919061149e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f1c9190611185565b60405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fef578082015181840152602081019050610fd4565b60008484015250505050565b6000601f19601f8301169050919050565b600061101782610fb5565b6110218185610fc0565b9350611031818560208601610fd1565b61103a81610ffb565b840191505092915050565b6000602082019050818103600083015261105f818461100c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110978261106c565b9050919050565b6110a78161108c565b81146110b257600080fd5b50565b6000813590506110c48161109e565b92915050565b6000819050919050565b6110dd816110ca565b81146110e857600080fd5b50565b6000813590506110fa816110d4565b92915050565b6000806040838503121561111757611116611067565b5b6000611125858286016110b5565b9250506020611136858286016110eb565b9150509250929050565b60008115159050919050565b61115581611140565b82525050565b6000602082019050611170600083018461114c565b92915050565b61117f816110ca565b82525050565b600060208201905061119a6000830184611176565b92915050565b6000806000606084860312156111b9576111b8611067565b5b60006111c7868287016110b5565b93505060206111d8868287016110b5565b92505060406111e9868287016110eb565b9150509250925092565b600060ff82169050919050565b611209816111f3565b82525050565b60006020820190506112246000830184611200565b92915050565b6000602082840312156112405761123f611067565b5b600061124e848285016110b5565b91505092915050565b6000806040838503121561126e5761126d611067565b5b600061127c858286016110b5565b925050602061128d858286016110b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112de57607f821691505b6020821081036112f1576112f0611297565b5b50919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061132d601483610fc0565b9150611338826112f7565b602082019050919050565b6000602082019050818103600083015261135c81611320565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000611399601683610fc0565b91506113a482611363565b602082019050919050565b600060208201905081810360008301526113c88161138c565b9050919050565b7f53656e64657220697320626c61636b6c69737465640000000000000000000000600082015250565b6000611405601583610fc0565b9150611410826113cf565b602082019050919050565b60006020820190508181036000830152611434816113f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611475826110ca565b9150611480836110ca565b92508282039050818111156114985761149761143b565b5b92915050565b60006114a9826110ca565b91506114b4836110ca565b92508282019050808211156114cc576114cb61143b565b5b92915050565b7f4f6e6c7920617574686f72697a6564206164647265737365732063616e20616460008201527f6420746f20626c61636b6c697374000000000000000000000000000000000000602082015250565b600061152e602e83610fc0565b9150611539826114d2565b604082019050919050565b6000602082019050818103600083015261155d81611521565b9050919050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b60006115c0602e83610fc0565b91506115cb82611564565b604082019050919050565b600060208201905081810360008301526115ef816115b3565b905091905056fea26469706673582212207b2a570bee98bfc6fbc1534655f0d260c78abdc2fe723687ffaf79d4655ad0e664736f6c63430008120033