60806040526101f460085560006009553480156200001c57600080fd5b506040518060400160405280601081526020016f436f6e6e65637469626c65205a6f6e6560801b8152506040518060400160405280600b81526020016a436f6e6e65637469626c6560a81b81525081600290816200007b919062000187565b5060036200008a828262000187565b50600080555050600b80546001600160a01b031916331790556001600a5566071afd498d0000600955604080516060810190915260368082526200171d6020830139600d90620000db908262000187565b5062000253565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200010d57607f821691505b6020821081036200012e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018257600081815260208120601f850160051c810160208610156200015d5750805b601f850160051c820191505b818110156200017e5782815560010162000169565b5050505b505050565b81516001600160401b03811115620001a357620001a3620000e2565b620001bb81620001b48454620000f8565b8462000134565b602080601f831160018114620001f35760008415620001da5750858301515b600019600386901b1c1916600185901b1785556200017e565b600085815260208120601f198616915b82811015620002245788860151825594840194600190910190840162000203565b5085821015620002435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6114ba80620002636000396000f3fe6080604052600436106101355760003560e01c806370a08231116100ab578063a22cb4651161006f578063a22cb46514610343578063b88d4fde14610363578063bdb4b84814610376578063c87b56dd1461038c578063d5abeb01146103ac578063e985e9c5146103c257600080fd5b806370a08231146102bb57806395d89b41146102db5780639adbb2b1146102f05780639b642de114610310578063a0712d681461033057600080fd5b806323b872dd116100fd57806323b872dd146102015780632a55205a146102145780633ccfd60b1461025357806342842e0e146102685780636352211e1461027b57806363e423f91461029b57600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101c957806318160ddd146101de575b600080fd5b34801561014657600080fd5b5061015a610155366004610e88565b6103e2565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b50610184610434565b6040516101669190610ef5565b34801561019d57600080fd5b506101b16101ac366004610f08565b6104c6565b6040516001600160a01b039091168152602001610166565b6101dc6101d7366004610f3d565b61050a565b005b3480156101ea57600080fd5b50600154600054035b604051908152602001610166565b6101dc61020f366004610f67565b6105aa565b34801561022057600080fd5b5061023461022f366004610fa3565b610743565b604080516001600160a01b039093168352602083019190915201610166565b34801561025f57600080fd5b506101dc610776565b6101dc610276366004610f67565b6107bc565b34801561028757600080fd5b506101b1610296366004610f08565b6107dc565b3480156102a757600080fd5b506101dc6102b6366004610f08565b6107e7565b3480156102c757600080fd5b506101f36102d6366004610fc5565b610803565b3480156102e757600080fd5b50610184610852565b3480156102fc57600080fd5b506101dc61030b366004610fe0565b610861565b34801561031c57600080fd5b506101dc61032b3660046110a8565b6108f1565b6101dc61033e366004610f08565b610914565b34801561034f57600080fd5b506101dc61035e3660046110f1565b610943565b6101dc61037136600461112d565b6109af565b34801561038257600080fd5b506101f360095481565b34801561039857600080fd5b506101846103a7366004610f08565b6109f9565b3480156103b857600080fd5b506101f360085481565b3480156103ce57600080fd5b5061015a6103dd3660046111a9565b610a2d565b60006301ffc9a760e01b6001600160e01b03198316148061041357506380ac58cd60e01b6001600160e01b03198316145b8061042e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b606060028054610443906111c5565b80601f016020809104026020016040519081016040528092919081815260200182805461046f906111c5565b80156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b5050505050905090565b60006104d182610a5b565b6104ee576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610515826107dc565b9050336001600160a01b0382161461054e576105318133610a2d565b61054e576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006105b582610a82565b9050836001600160a01b0316816001600160a01b0316146105e85760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417610635576106188633610a2d565b61063557604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661065c57604051633a954ecd60e21b815260040160405180910390fd5b801561066757600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b841690036106f9576001840160008181526004602052604081205490036106f75760005481146106f75760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b600080806103e8610755856032611215565b61075f919061122c565b600b546001600160a01b0316969095509350505050565b600b546001600160a01b0316331461078d57600080fd5b60405133904780156108fc02916000818181858888f193505050501580156107b9573d6000803e3d6000fd5b50565b6107d7838383604051806020016040528060008152506109af565b505050565b600061042e82610a82565b600b546001600160a01b031633146107fe57600080fd5b600a55565b60006001600160a01b03821661082c576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b606060038054610443906111c5565b600b546001600160a01b0316331461087857600080fd5b6008548261ffff1661088d6001546000540390565b610897919061124e565b11156108df5760405162461bcd60e51b815260206004820152601360248201527222bc31b2b2b2399036b0bc1039bab838363c9760691b604482015260640160405180910390fd5b6108ed818361ffff16610af0565b5050565b600b546001600160a01b0316331461090857600080fd5b600d6108ed82826112a7565b600854816109256001546000540390565b61092f919061124e565b111561093a57600080fd5b6107b981610b0a565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109ba8484846105aa565b6001600160a01b0383163b156109f3576109d684848484610bd7565b6109f3576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060600d610a0683610cc3565b604051602001610a17929190611367565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600080548210801561042e575050600090815260046020526040902054600160e01b161590565b600081600054811015610ad75760008181526004602052604081205490600160e01b82169003610ad5575b80600003610ace575060001901600081815260046020526040902054610aad565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b6108ed828260405180602001604052806000815250610d07565b34600003610bb4576000610b216001546000540390565b90506005600854610b32919061122c565b811115610ba857610b4233610803565b15610b4c57600080fd5b6000600c82600854610b5e91906113fe565b610b68919061122c565b436000908152600c60205260409020549091508111610b8657600080fd5b436000908152600c60205260408120805491610ba183611411565b9190505550505b6108ed33600a54610af0565b600954610bc19082611215565b341015610bcd57600080fd5b6107b93382610af0565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290610c0c90339089908890889060040161142a565b6020604051808303816000875af1925050508015610c47575060408051601f3d908101601f19168201909252610c4491810190611467565b60015b610ca5573d808015610c75576040519150601f19603f3d011682016040523d82523d6000602084013e610c7a565b606091505b508051600003610c9d576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480610cdd5750819003601f19909101908152919050565b610d118383610d74565b6001600160a01b0383163b156107d7576000548281035b610d3b6000868380600101945086610bd7565b610d58576040516368d2bf6b60e11b815260040160405180910390fd5b818110610d28578160005414610d6d57600080fd5b5050505050565b6000805490829003610d995760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114610e4857808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101610e10565b5081600003610e6957604051622e076360e81b815260040160405180910390fd5b60005550505050565b6001600160e01b0319811681146107b957600080fd5b600060208284031215610e9a57600080fd5b8135610ace81610e72565b60005b83811015610ec0578181015183820152602001610ea8565b50506000910152565b60008151808452610ee1816020860160208601610ea5565b601f01601f19169290920160200192915050565b602081526000610ace6020830184610ec9565b600060208284031215610f1a57600080fd5b5035919050565b80356001600160a01b0381168114610f3857600080fd5b919050565b60008060408385031215610f5057600080fd5b610f5983610f21565b946020939093013593505050565b600080600060608486031215610f7c57600080fd5b610f8584610f21565b9250610f9360208501610f21565b9150604084013590509250925092565b60008060408385031215610fb657600080fd5b50508035926020909101359150565b600060208284031215610fd757600080fd5b610ace82610f21565b60008060408385031215610ff357600080fd5b823561ffff8116811461100557600080fd5b915061101360208401610f21565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561104d5761104d61101c565b604051601f8501601f19908116603f011681019082821181831017156110755761107561101c565b8160405280935085815286868601111561108e57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156110ba57600080fd5b813567ffffffffffffffff8111156110d157600080fd5b8201601f810184136110e257600080fd5b610cbb84823560208401611032565b6000806040838503121561110457600080fd5b61110d83610f21565b91506020830135801515811461112257600080fd5b809150509250929050565b6000806000806080858703121561114357600080fd5b61114c85610f21565b935061115a60208601610f21565b925060408501359150606085013567ffffffffffffffff81111561117d57600080fd5b8501601f8101871361118e57600080fd5b61119d87823560208401611032565b91505092959194509250565b600080604083850312156111bc57600080fd5b61100583610f21565b600181811c908216806111d957607f821691505b6020821081036111f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761042e5761042e6111ff565b60008261124957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561042e5761042e6111ff565b601f8211156107d757600081815260208120601f850160051c810160208610156112885750805b601f850160051c820191505b8181101561073b57828155600101611294565b815167ffffffffffffffff8111156112c1576112c161101c565b6112d5816112cf84546111c5565b84611261565b602080601f83116001811461130a57600084156112f25750858301515b600019600386901b1c1916600185901b17855561073b565b600085815260208120601f198616915b828110156113395788860151825594840194600190910190840161131a565b50858210156113575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808454611375816111c5565b6001828116801561138d57600181146113a2576113d1565b60ff19841687528215158302870194506113d1565b8860005260208060002060005b858110156113c85781548a8201529084019082016113af565b50505082870194505b5050505083516113e5818360208801610ea5565b64173539b7b760d91b9101908152600501949350505050565b8181038181111561042e5761042e6111ff565b600060018201611423576114236111ff565b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061145d90830184610ec9565b9695505050505050565b60006020828403121561147957600080fd5b8151610ace81610e7256fea2646970667358221220aa729c0cbc8bf1916bbe6d0f34203c6a6c0296c54fd79ba40babf60dbdbd873964736f6c63430008110033697066733a2f2f516d55707635637151634e65616e4162636e5962484834596978506b524c4b70583875736b5a6f693337513579702f