0x608060405234801561000f575f80fd5b50604051610da0380380610da083398101604081905261002e9161015f565b5f6100398582610260565b5060016100468482610260565b506002805460ff191660ff841690811790915561006490600a610415565b61006e9082610427565b6003819055335f81815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505061043e565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100e6575f80fd5b81516001600160401b0380821115610100576101006100c3565b604051601f8301601f19908116603f01168101908282118183101715610128576101286100c3565b81604052838152866020858801011115610140575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b5f805f8060808587031215610172575f80fd5b84516001600160401b0380821115610188575f80fd5b610194888389016100d7565b955060208701519150808211156101a9575f80fd5b506101b6878288016100d7565b935050604085015160ff811681146101cc575f80fd5b6060959095015193969295505050565b600181811c908216806101f057607f821691505b60208210810361020e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561025b57805f5260205f20601f840160051c810160208510156102395750805b601f840160051c820191505b81811015610258575f8155600101610245565b50505b505050565b81516001600160401b03811115610279576102796100c3565b61028d8161028784546101dc565b84610214565b602080601f8311600181146102c0575f84156102a95750858301515b5f19600386901b1c1916600185901b178555610317565b5f85815260208120601f198616915b828110156102ee578886015182559484019460019091019084016102cf565b508582101561030b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561036d57815f19048211156103535761035361031f565b8085161561036057918102915b93841c9390800290610338565b509250929050565b5f826103835750600161040f565b8161038f57505f61040f565b81600181146103a557600281146103af576103cb565b600191505061040f565b60ff8411156103c0576103c061031f565b50506001821b61040f565b5060208310610133831016604e8410600b84101617156103ee575081810a61040f565b6103f88383610333565b805f190482111561040b5761040b61031f565b0290505b92915050565b5f6104208383610375565b9392505050565b808202811582820484141761040f5761040f61031f565b6109558061044b5f395ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c806347b5dd541161006e57806347b5dd541461015457806355d0a1d01461015d57806370a082311461016557806395d89b4114610184578063a9059cbb1461018c578063dd62ed3e1461019f575f80fd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd1461010d578063313ce5671461012057806342966c681461013f575b5f80fd5b6100bd6101c9565b6040516100ca919061070b565b60405180910390f35b6100e66100e136600461075b565b610254565b60405190151581526020016100ca565b6100ff60035481565b6040519081526020016100ca565b6100e661011b366004610783565b6102c0565b60025461012d9060ff1681565b60405160ff90911681526020016100ca565b61015261014d3660046107bc565b6104f2565b005b6100ff60045481565b6004546100ff565b6100ff6101733660046107d3565b60056020525f908152604090205481565b6100bd61061d565b6100e661019a36600461075b565b61062a565b6100ff6101ad3660046107f3565b600660209081525f928352604080842090915290825290205481565b5f80546101d590610824565b80601f016020809104026020016040519081016040528092919081815260200182805461020190610824565b801561024c5780601f106102235761010080835404028352916020019161024c565b820191905f5260205f20905b81548152906001019060200180831161022f57829003601f168201915b505050505081565b335f8181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102ae9086815260200190565b60405180910390a35060015b92915050565b5f6001600160a01b03841661032a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0383166103505760405162461bcd60e51b81526004016103219061085c565b6001600160a01b0384165f908152600560205260409020548211156103875760405162461bcd60e51b81526004016103219061089f565b6001600160a01b0384165f90815260066020908152604080832033845290915290205482111561040a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610321565b6001600160a01b0384165f90815260056020526040812080548492906104319084906108f9565b90915550506001600160a01b0383165f908152600560205260408120805484929061045d90849061090c565b90915550506001600160a01b0384165f908152600660209081526040808320338452909152812080548492906104949084906108f9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104e091815260200190565b60405180910390a35060019392505050565b335f9081526005602052604090205481111561055b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610321565b335f90815260056020526040812080548392906105799084906108f9565b925050819055508060035f82825461059191906108f9565b925050819055508060045f8282546105a9919061090c565b909155505060405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a26040518181525f9033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b600180546101d590610824565b5f6001600160a01b0383166106515760405162461bcd60e51b81526004016103219061085c565b335f9081526005602052604090205482111561067f5760405162461bcd60e51b81526004016103219061089f565b335f908152600560205260408120805484929061069d9084906108f9565b90915550506001600160a01b0383165f90815260056020526040812080548492906106c990849061090c565b90915550506040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016102ae565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610756575f80fd5b919050565b5f806040838503121561076c575f80fd5b61077583610740565b946020939093013593505050565b5f805f60608486031215610795575f80fd5b61079e84610740565b92506107ac60208501610740565b9150604084013590509250925092565b5f602082840312156107cc575f80fd5b5035919050565b5f602082840312156107e3575f80fd5b6107ec82610740565b9392505050565b5f8060408385031215610804575f80fd5b61080d83610740565b915061081b60208401610740565b90509250929050565b600181811c9082168061083857607f821691505b60208210810361085657634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102ba576102ba6108e5565b808201808211156102ba576102ba6108e556fea26469706673582212205166e3cd57458d1a4e9de97be63a80f8473761371d145281e625d3c94797ff4664736f6c63430008190033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000a3e9ab800000000000000000000000000000000000000000000000000000000000000000df09fa59d204b697769436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000af09fa59d204b4957494300000000000000000000000000000000000000000000