60806040526d14bdf13917d6a5a964655df800006002556040518060400160405280600781526020017f484152414d424500000000000000000000000000000000000000000000000000815250600390816200005c9190620003a8565b506040518060400160405280600381526020017f484d42000000000000000000000000000000000000000000000000000000000081525060049081620000a39190620003a8565b5060126005556003600655348015620000ba575f80fd5b506002545f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048c565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620001c057607f821691505b602082108103620001d657620001d56200017b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200023a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001fd565b620002468683620001fd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620002906200028a62000284846200025e565b62000267565b6200025e565b9050919050565b5f819050919050565b620002ab8362000270565b620002c3620002ba8262000297565b84845462000209565b825550505050565b5f90565b620002d9620002cb565b620002e6818484620002a0565b505050565b5b818110156200030d57620003015f82620002cf565b600181019050620002ec565b5050565b601f8211156200035c576200032681620001dc565b6200033184620001ee565b8101602085101562000341578190505b620003596200035085620001ee565b830182620002eb565b50505b505050565b5f82821c905092915050565b5f6200037e5f198460080262000361565b1980831691505092915050565b5f6200039883836200036d565b9150826002028217905092915050565b620003b38262000144565b67ffffffffffffffff811115620003cf57620003ce6200014e565b5b620003db8254620001a8565b620003e882828562000311565b5f60209050601f8311600181146200041e575f841562000409578287015190505b6200041585826200038b565b86555062000484565b601f1984166200042e86620001dc565b5f5b82811015620004575784890151825560018201915060208501945060208101905062000430565b8683101562000477578489015162000473601f8916826200036d565b8355505b6001600288020188555050505b505050505050565b611052806200049a5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c806370a082311161006f57806370a08231146101a05780638da5cb5b146101d057806395d89b41146101ee578063a001ecdd1461020c578063a9059cbb1461022a578063dd62ed3e1461025a576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd1461012257806327e235e314610152578063313ce56714610182575b5f80fd5b6100be61028a565b6040516100cb9190610b93565b60405180910390f35b6100ee60048036038101906100e99190610c44565b610316565b6040516100fb9190610c9c565b60405180910390f35b61010c610403565b6040516101199190610cc4565b60405180910390f35b61013c60048036038101906101379190610cdd565b610409565b6040516101499190610c9c565b60405180910390f35b61016c60048036038101906101679190610d2d565b61074c565b6040516101799190610cc4565b60405180910390f35b61018a610760565b6040516101979190610cc4565b60405180910390f35b6101ba60048036038101906101b59190610d2d565b610766565b6040516101c79190610cc4565b60405180910390f35b6101d86107ab565b6040516101e59190610d67565b60405180910390f35b6101f66107d0565b6040516102039190610b93565b60405180910390f35b61021461085c565b6040516102219190610cc4565b60405180910390f35b610244600480360381019061023f9190610c44565b610862565b6040516102519190610c9c565b60405180910390f35b610274600480360381019061026f9190610d80565b610ae9565b6040516102819190610cc4565b60405180910390f35b6003805461029790610deb565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390610deb565b801561030e5780601f106102e55761010080835404028352916020019161030e565b820191905f5260205f20905b8154815290600101906020018083116102f157829003601f168201915b505050505081565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103f19190610cc4565b60405180910390a36001905092915050565b60025481565b5f8161041485610766565b1015610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90610e65565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050790610ecd565b60405180910390fd5b5f6103e8600654846105229190610f18565b61052c9190610f86565b90505f818461053b9190610fb6565b9050805f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105889190610fe9565b92505081905550835f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105da9190610fb6565b92505081905550815f8060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461064d9190610fe9565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106b19190610cc4565b60405180910390a360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107379190610cc4565b60405180910390a36001925050509392505050565b5f602052805f5260405f205f915090505481565b60055481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600480546107dd90610deb565b80601f016020809104026020016040519081016040528092919081815260200182805461080990610deb565b80156108545780601f1061082b57610100808354040283529160200191610854565b820191905f5260205f20905b81548152906001019060200180831161083757829003601f168201915b505050505081565b60065481565b5f8161086d33610766565b10156108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590610e65565b60405180910390fd5b5f6103e8600654846108c09190610f18565b6108ca9190610f86565b90505f81846108d99190610fb6565b9050805f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109269190610fe9565b92505081905550835f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109789190610fb6565b92505081905550815f8060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109eb9190610fe9565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a4f9190610cc4565b60405180910390a360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad59190610cc4565b60405180910390a360019250505092915050565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610b40578082015181840152602081019050610b25565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610b6582610b09565b610b6f8185610b13565b9350610b7f818560208601610b23565b610b8881610b4b565b840191505092915050565b5f6020820190508181035f830152610bab8184610b5b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610be082610bb7565b9050919050565b610bf081610bd6565b8114610bfa575f80fd5b50565b5f81359050610c0b81610be7565b92915050565b5f819050919050565b610c2381610c11565b8114610c2d575f80fd5b50565b5f81359050610c3e81610c1a565b92915050565b5f8060408385031215610c5a57610c59610bb3565b5b5f610c6785828601610bfd565b9250506020610c7885828601610c30565b9150509250929050565b5f8115159050919050565b610c9681610c82565b82525050565b5f602082019050610caf5f830184610c8d565b92915050565b610cbe81610c11565b82525050565b5f602082019050610cd75f830184610cb5565b92915050565b5f805f60608486031215610cf457610cf3610bb3565b5b5f610d0186828701610bfd565b9350506020610d1286828701610bfd565b9250506040610d2386828701610c30565b9150509250925092565b5f60208284031215610d4257610d41610bb3565b5b5f610d4f84828501610bfd565b91505092915050565b610d6181610bd6565b82525050565b5f602082019050610d7a5f830184610d58565b92915050565b5f8060408385031215610d9657610d95610bb3565b5b5f610da385828601610bfd565b9250506020610db485828601610bfd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e0257607f821691505b602082108103610e1557610e14610dbe565b5b50919050565b7f62616c616e636520746f6f206c6f7700000000000000000000000000000000005f82015250565b5f610e4f600f83610b13565b9150610e5a82610e1b565b602082019050919050565b5f6020820190508181035f830152610e7c81610e43565b9050919050565b7f616c6c6f77616e636520746f6f206c6f770000000000000000000000000000005f82015250565b5f610eb7601183610b13565b9150610ec282610e83565b602082019050919050565b5f6020820190508181035f830152610ee481610eab565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f2282610c11565b9150610f2d83610c11565b9250828202610f3b81610c11565b91508282048414831517610f5257610f51610eeb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f9082610c11565b9150610f9b83610c11565b925082610fab57610faa610f59565b5b828204905092915050565b5f610fc082610c11565b9150610fcb83610c11565b9250828203905081811115610fe357610fe2610eeb565b5b92915050565b5f610ff382610c11565b9150610ffe83610c11565b925082820190508082111561101657611015610eeb565b5b9291505056fea264697066735822122065e7ed0c375479fce5fb2f9f18c19ccfe378ee7a05fe94a59d2eb5532a98b84564736f6c63430008140033