60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4d414741000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4147410000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000360565b508060049080519060200190620000af92919062000360565b505050620000d2620000c66200010f60201b60201c565b6200011760201b60201c565b6000670de0b6b3a7640000905060006305f5e100905062000107338383620000fb9190620004f5565b620001dd60201b60201c565b50506200061d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002479062000448565b60405180910390fd5b62000264600083836200035660201b60201c565b806002600082825462000278919062000498565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002cf919062000498565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200033691906200046a565b60405180910390a362000352600083836200035b60201b60201c565b5050565b505050565b505050565b8280546200036e9062000560565b90600052602060002090601f016020900481019282620003925760008555620003de565b82601f10620003ad57805160ff1916838001178555620003de565b82800160010185558215620003de579182015b82811115620003dd578251825591602001919060010190620003c0565b5b509050620003ed9190620003f1565b5090565b5b808211156200040c576000816000905550600101620003f2565b5090565b60006200041f601f8362000487565b91506200042c82620005f4565b602082019050919050565b620004428162000556565b82525050565b60006020820190508181036000830152620004638162000410565b9050919050565b600060208201905062000481600083018462000437565b92915050565b600082825260208201905092915050565b6000620004a58262000556565b9150620004b28362000556565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004ea57620004e962000596565b5b828201905092915050565b6000620005028262000556565b91506200050f8362000556565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200054b576200054a62000596565b5b828202905092915050565b6000819050919050565b600060028204905060018216806200057957607f821691505b6020821081141562000590576200058f620005c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611606806200062d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b6040516101049190611014565b60405180910390f35b61012760048036038101906101229190610df2565b61038d565b6040516101349190610ff9565b60405180910390f35b6101456103b0565b6040516101529190611156565b60405180910390f35b61017560048036038101906101709190610da3565b6103ba565b6040516101829190610ff9565b60405180910390f35b6101936103e9565b6040516101a09190611171565b60405180910390f35b6101c360048036038101906101be9190610df2565b6103f2565b6040516101d09190610ff9565b60405180910390f35b6101f360048036038101906101ee9190610d3e565b610429565b6040516102009190611156565b60405180910390f35b610211610471565b005b61021b610485565b6040516102289190610fde565b60405180910390f35b6102396104af565b6040516102469190611014565b60405180910390f35b61026960048036038101906102649190610df2565b610541565b6040516102769190610ff9565b60405180910390f35b61029960048036038101906102949190610df2565b6105b8565b6040516102a69190610ff9565b60405180910390f35b6102c960048036038101906102c49190610d67565b6105db565b6040516102d69190611156565b60405180910390f35b6102f960048036038101906102f49190610d3e565b610662565b005b60606003805461030a90611286565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611286565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b6000806103986106e6565b90506103a58185856106ee565b600191505092915050565b6000600254905090565b6000806103c56106e6565b90506103d28582856108b9565b6103dd858585610945565b60019150509392505050565b60006012905090565b6000806103fd6106e6565b905061041e81858561040f85896105db565b61041991906111a8565b6106ee565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610479610bc6565b6104836000610c44565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104be90611286565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90611286565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b60008061054c6106e6565b9050600061055a82866105db565b90508381101561059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611136565b60405180910390fd5b6105ac82868684036106ee565b60019250505092915050565b6000806105c36106e6565b90506105d0818585610945565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61066a610bc6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190611056565b60405180910390fd5b6106e381610c44565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590611116565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c590611076565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108ac9190611156565b60405180910390a3505050565b60006108c584846105db565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461093f5781811015610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890611096565b60405180910390fd5b61093e84848484036106ee565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906110f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90611036565b60405180910390fd5b610a30838383610d0a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad906110b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4991906111a8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bad9190611156565b60405180910390a3610bc0848484610d0f565b50505050565b610bce6106e6565b73ffffffffffffffffffffffffffffffffffffffff16610bec610485565b73ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c39906110d6565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081359050610d23816115a2565b92915050565b600081359050610d38816115b9565b92915050565b600060208284031215610d5057600080fd5b6000610d5e84828501610d14565b91505092915050565b60008060408385031215610d7a57600080fd5b6000610d8885828601610d14565b9250506020610d9985828601610d14565b9150509250929050565b600080600060608486031215610db857600080fd5b6000610dc686828701610d14565b9350506020610dd786828701610d14565b9250506040610de886828701610d29565b9150509250925092565b60008060408385031215610e0557600080fd5b6000610e1385828601610d14565b9250506020610e2485828601610d29565b9150509250929050565b610e37816111fe565b82525050565b610e4681611210565b82525050565b6000610e578261118c565b610e618185611197565b9350610e71818560208601611253565b610e7a81611316565b840191505092915050565b6000610e92602383611197565b9150610e9d82611327565b604082019050919050565b6000610eb5602683611197565b9150610ec082611376565b604082019050919050565b6000610ed8602283611197565b9150610ee3826113c5565b604082019050919050565b6000610efb601d83611197565b9150610f0682611414565b602082019050919050565b6000610f1e602683611197565b9150610f298261143d565b604082019050919050565b6000610f41602083611197565b9150610f4c8261148c565b602082019050919050565b6000610f64602583611197565b9150610f6f826114b5565b604082019050919050565b6000610f87602483611197565b9150610f9282611504565b604082019050919050565b6000610faa602583611197565b9150610fb582611553565b604082019050919050565b610fc98161123c565b82525050565b610fd881611246565b82525050565b6000602082019050610ff36000830184610e2e565b92915050565b600060208201905061100e6000830184610e3d565b92915050565b6000602082019050818103600083015261102e8184610e4c565b905092915050565b6000602082019050818103600083015261104f81610e85565b9050919050565b6000602082019050818103600083015261106f81610ea8565b9050919050565b6000602082019050818103600083015261108f81610ecb565b9050919050565b600060208201905081810360008301526110af81610eee565b9050919050565b600060208201905081810360008301526110cf81610f11565b9050919050565b600060208201905081810360008301526110ef81610f34565b9050919050565b6000602082019050818103600083015261110f81610f57565b9050919050565b6000602082019050818103600083015261112f81610f7a565b9050919050565b6000602082019050818103600083015261114f81610f9d565b9050919050565b600060208201905061116b6000830184610fc0565b92915050565b60006020820190506111866000830184610fcf565b92915050565b600081519050919050565b600082825260208201905092915050565b60006111b38261123c565b91506111be8361123c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111f3576111f26112b8565b5b828201905092915050565b60006112098261121c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611271578082015181840152602081019050611256565b83811115611280576000848401525b50505050565b6000600282049050600182168061129e57607f821691505b602082108114156112b2576112b16112e7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6115ab816111fe565b81146115b657600080fd5b50565b6115c28161123c565b81146115cd57600080fd5b5056fea264697066735822122017fb794727c32190934f4b7aedb44f61a9f55b933588d3515bbc68e06a893a9364736f6c63430008040033