0x6080604052600436106101855760003560e01c806375f12b21116100d15780639779d1a61161008a578063ee68724b11610064578063ee68724b1461054b578063f21d3ab51461056b578063f2fde38b1461058b578063fbec27bf146105ab57600080fd5b80639779d1a6146104cb578063cfd7789c146104fb578063d408f6571461051b57600080fd5b806375f12b21146103be5780637ee99283146103df5780638da5cb5b1461042e578063903aa7dd1461045657806391027c5b1461048b5780639735a634146104ab57600080fd5b8063247482ba1161013e578063550bfa5611610118578063550bfa56146103535780635de0398e146103735780635ecb16cd14610389578063715018a6146103a957600080fd5b8063247482ba146102d35780633ff428c7146102f35780634f51e2941461031357600080fd5b806301e980d4146101e65780630dc9de85146102065780631385d24c146102265780631781261f1461023b57806318b135e3146102865780631d169419146102b357600080fd5b366101e157333214156101df5760405162461bcd60e51b815260206004820152601a60248201527f446f206e6f742073656e642057454d4958206469726563746c7900000000000060448201526064015b60405180910390fd5b005b600080fd5b3480156101f257600080fd5b506101df61020136600461316e565b6105cb565b34801561021257600080fd5b506101df6102213660046131d2565b610633565b34801561023257600080fd5b506101df61083a565b34801561024757600080fd5b50610273610256366004613233565b600560209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561029257600080fd5b506102736102a136600461326c565b60066020526000908152604090205481565b3480156102bf57600080fd5b506102736102ce3660046132a2565b610863565b3480156102df57600080fd5b506102736102ee366004613503565b610a36565b3480156102ff57600080fd5b506101df61030e3660046135b5565b610aa3565b34801561031f57600080fd5b5061034361032e36600461326c565b60046020526000908152604090205460ff1681565b604051901515815260200161027d565b34801561035f57600080fd5b506101df61036e36600461316e565b610ad6565b34801561037f57600080fd5b5061027360025481565b34801561039557600080fd5b506101df6103a43660046131d2565b610b34565b3480156103b557600080fd5b506101df610d3d565b3480156103ca57600080fd5b5060005461034390600160a01b900460ff1681565b3480156103eb57600080fd5b506103ff6103fa3660046135e3565b610d51565b6040805194855260208501939093526001600160a01b039182169284019290925216606082015260800161027d565b34801561043a57600080fd5b506000546040516001600160a01b03909116815260200161027d565b34801561046257600080fd5b5061047661047136600461360f565b610ff0565b6040805192835260208301919091520161027d565b34801561049757600080fd5b506102736104a636600461371e565b6112e6565b3480156104b757600080fd5b506101df6104c63660046137f0565b61137d565b3480156104d757600080fd5b506103436104e636600461326c565b60076020526000908152604090205460ff1681565b34801561050757600080fd5b5061047661051636600461385b565b611469565b34801561052757600080fd5b5061034361053636600461326c565b60016020526000908152604090205460ff1681565b34801561055757600080fd5b506104766105663660046138cd565b6114fc565b34801561057757600080fd5b506104766105863660046139ba565b61159d565b34801561059757600080fd5b506101df6105a636600461326c565b611aa3565b3480156105b757600080fd5b506101df6105c63660046135b5565b611b1c565b6105d3611b4f565b606481111561062e5760405162461bcd60e51b815260206004820152602160248201527f416666696c696174652053706c69742056616c7565206e6f7420616c6c6f77656044820152601960fa1b60648201526084016101d6565b600355565b6000805b828110156108345733600090815260056020526040812090858584818110610661576106616139fc565b9050602002016020810190610676919061326c565b6001600160a01b031681526020808201929092526040908101600090812054338252600590935290812091935090818686858181106106b7576106b76139fc565b90506020020160208101906106cc919061326c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160066000868685818110610707576107076139fc565b905060200201602081019061071c919061326c565b6001600160a01b03166001600160a01b03168152602001908152602001600020546107479190613a28565b6006600086868581811061075d5761075d6139fc565b9050602002016020810190610772919061326c565b6001600160a01b0316815260208101919091526040016000205573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8484838181106107b3576107b36139fc565b90506020020160208101906107c8919061326c565b6001600160a01b031614156107e6576107e13383611ba9565b610822565b61082233838686858181106107fd576107fd6139fc565b9050602002016020810190610812919061326c565b6001600160a01b03169190611cc2565b8061082c81613a3f565b915050610637565b50505050565b610842611b4f565b6000805460ff60a01b198116600160a01b9182900460ff1615909102179055565b60008054600160a01b900460ff161561088e5760405162461bcd60e51b81526004016101d690613a5a565b60008061089c8a8a86611d25565b90925090506001600160a01b038b166108f3576108ec8a83838e8c8c7f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e6001600160a01b03166341876647611fb9565b9250610933565b6109308a83838e8c8c7f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e6001600160a01b03166338ed1739611fb9565b92505b858310156109535760405162461bcd60e51b81526004016101d690613a86565b60006001600160a01b038c166109c25761098473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858860016122c8565b9050336108fc6109948387613a28565b6040518115909202916000818181858888f193505050501580156109bc573d6000803e3d6000fd5b506109f0565b6109cf8c858860016122c8565b90506109f0336109df8387613a28565b6001600160a01b038f169190611cc2565b6109fa8185613a28565b9350600080516020613d78833981519152338c8e87604051610a1f9493929190613aad565b60405180910390a150505098975050505050505050565b60008054600160a01b900460ff1615610a615760405162461bcd60e51b81526004016101d690613a5a565b600080610a6f8a8a86611d25565b91509150610a818a83838e8b8b6123f3565b9250878310156109535760405162461bcd60e51b81526004016101d690613a86565b610aab611b4f565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b610ade611b4f565b6064811115610b2f5760405162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f77656400000000000060448201526064016101d6565b600255565b610b3c611b4f565b60005b81811015610d3857600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848484818110610b7057610b706139fc565b9050602002016020810190610b85919061326c565b6001600160a01b03161415610c055760066000858585818110610baa57610baa6139fc565b9050602002016020810190610bbf919061326c565b6001600160a01b03168152602081019190915260400160002054610be39047613a28565b9050610c00610bfa6000546001600160a01b031690565b82611ba9565b610d25565b60066000858585818110610c1b57610c1b6139fc565b9050602002016020810190610c30919061326c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054848484818110610c6357610c636139fc565b9050602002016020810190610c78919061326c565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015610cb957600080fd5b505afa158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190613ad7565b610cfb9190613a28565b9050610d25610d126000546001600160a01b031690565b828686868181106107fd576107fd6139fc565b5080610d3081613a3f565b915050610b3f565b505050565b610d45611b4f565b610d4f60006125cf565b565b6000806000806000869050806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190613af0565b9250806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0857600080fd5b505afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190613af0565b6040516370a0823160e01b81526001600160a01b0389811660048301529193506000918516906370a082319060240160206040518083038186803b158015610e8757600080fd5b505afa158015610e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613ad7565b6040516370a0823160e01b81526001600160a01b038a811660048301529192506000918516906370a082319060240160206040518083038186803b158015610f0657600080fd5b505afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190613ad7565b90506000896001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7b57600080fd5b505afa158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb39190613ad7565b905080610fc0848b613b0d565b610fca9190613b2c565b975080610fd7838b613b0d565b610fe19190613b2c565b96505050505092959194509250565b600080548190600160a01b900460ff161561101d5760405162461bcd60e51b81526004016101d690613a5a565b6110288b8b85611d25565b909250905061103c8b83838f8d8b8b61261f565b9092509050878210156110615760405162461bcd60e51b81526004016101d690613a86565b868110156110815760405162461bcd60e51b81526004016101d690613a86565b60008b6001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156110bc57600080fd5b505afa1580156110d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f49190613af0565b905060008c6001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111699190613af0565b90506001600160a01b038e16611225578d6001600160a01b0316826001600160a01b03161461119757919291905b6111b873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858860016122c8565b6111c29085613a28565b93506111d181848860016122c8565b6111db9084613a28565b604051909350339085156108fc029086906000818181858888f1935050505015801561120b573d6000803e3d6000fd5b506112206001600160a01b0382163385611cc2565b61127f565b61123282858860016122c8565b61123c9085613a28565b935061124b81848860016122c8565b6112559084613a28565b925061126b6001600160a01b0383163386611cc2565b61127f6001600160a01b0382163385611cc2565b600080516020613d78833981519152338e84876040516112a29493929190613aad565b60405180910390a1600080516020613d78833981519152338e83866040516112cd9493929190613aad565b60405180910390a150509a509a98505050505050505050565b60008054600160a01b900460ff16156113115760405162461bcd60e51b81526004016101d690613a5a565b61135e896bfffffffffff096fb4da2000088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061285792505050565b61136f8a8a8a8a8888886000610a36565b9a9950505050505050505050565b611385611b4f565b8281146113cb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c84092dce0eae840d8cadccee8d60631b60448201526064016101d6565b60005b83811015611462578282828181106113e8576113e86139fc565b90506020020160208101906113fd9190613b4e565b60076000878785818110611413576114136139fc565b9050602002016020810190611428919061326c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061145a81613a3f565b9150506113ce565b5050505050565b600080548190600160a01b900460ff16156114965760405162461bcd60e51b81526004016101d690613a5a565b6114e3876bfffffffffff096fb4da2000086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061285792505050565b6114ee87878761159d565b909890975095505050505050565b600080548190600160a01b900460ff16156115295760405162461bcd60e51b81526004016101d690613a5a565b6115768c6bfffffffffff096fb4da2000089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061285792505050565b6115898d8d8d8d8d8d8b8b8b6000610ff0565b915091509b509b9950505050505050505050565b600080548190600160a01b900460ff16156115ca5760405162461bcd60e51b81526004016101d690613a5a565b846001600160a01b0381166116215760405162461bcd60e51b815260206004820152601b60248201527f506f6f6c2043616e6e6f74206265205a65726f2041646472657373000000000060448201526064016101d6565b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190613af0565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d157600080fd5b505afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190613af0565b90506117206001600160a01b03891633308a61294c565b61174b887f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e89612984565b7f000000000000000000000000bd54dff32f8d88a64d0adc061e6b96d0630d9a1c6001600160a01b0316826001600160a01b031614806117bc57507f000000000000000000000000bd54dff32f8d88a64d0adc061e6b96d0630d9a1c6001600160a01b0316816001600160a01b0316145b1561193d5760007f000000000000000000000000bd54dff32f8d88a64d0adc061e6b96d0630d9a1c6001600160a01b0316836001600160a01b0316146118025782611804565b815b60405163b168df1360e01b81526001600160a01b038083166004830152602482018b90526001604483018190526064830152306084830152600f60fc1b60a48301529192507f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e9091169063b168df139060c4016040805180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c89190613b6b565b909650945060006118dc82888a60016122c8565b9050600061190173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888b60016122c8565b905061192233611911848b613a28565b6001600160a01b0386169190611cc2565b61193533611930838a613a28565b611ba9565b505050611a42565b604051635d5155ef60e11b81526001600160a01b037f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e169063baa2abde9061199a90859085908c9060019081903090600f60fc1b90600401613b8f565b6040805180830381600087803b1580156119b357600080fd5b505af11580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190613b6b565b909550935060006119ff83878960016122c8565b90506000611a1083878a60016122c8565b9050611a3133611a20848a613a28565b6001600160a01b0387169190611cc2565b611a3f336119118389613a28565b50505b600080516020613d7883398151915233898488604051611a659493929190613aad565b60405180910390a1600080516020613d7883398151915233898387604051611a909493929190613aad565b60405180910390a1505050935093915050565b611aab611b4f565b6001600160a01b038116611b105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101d6565b611b19816125cf565b50565b611b24611b4f565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b80471015611bf95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016101d6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c46576040519150601f19603f3d011682016040523d82523d6000602084013e611c4b565b606091505b5050905080610d385760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016101d6565b6040516001600160a01b038316602482015260448101829052610d3890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526129ad565b600080846001600160a01b038116611d7f5760405162461bcd60e51b815260206004820152601b60248201527f506f6f6c2043616e6e6f74206265205a65726f2041646472657373000000000060448201526064016101d6565b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df29190613af0565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2f57600080fd5b505afa158015611e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e679190613af0565b9050611e74888888612a7f565b50611ea0887f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e89612984565b604051635d5155ef60e11b81526001600160a01b037f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e169063baa2abde90611efd90859085908c9060019081903090600f60fc1b90600401613b8f565b6040805180830381600087803b158015611f1657600080fd5b505af1158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e9190613b6b565b90955093508415801590611f625750600084115b611fae5760405162461bcd60e51b815260206004820152601e60248201527f52656d6f76656420496e73756666696369656e74204c6971756964697479000060448201526064016101d6565b505050935093915050565b600080896001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611ff557600080fd5b505afa158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d9190613af0565b905060008a6001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561206a57600080fd5b505afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190613af0565b9050876001600160a01b0316826001600160a01b031614156120cf576120c88a84613bcf565b92506121af565b6120fa827f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e8c612984565b84848b60018a8a30600f60fc1b6040518763ffffffff1660e01b815260040161212896959493929190613be7565b600060405180830381600087803b15801561214257600080fd5b505af1158015612156573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261217e9190810190613c5a565b612189600188613a28565b81518110612199576121996139fc565b6020026020010151836121ac9190613bcf565b92505b876001600160a01b0316816001600160a01b031614156121da576121d38984613bcf565b92506122ba565b612205817f0000000000000000000000001d27b6354c8a7cf8f171c9e058f87e095237030e8b612984565b84848a60018a8a30600f60fc1b6040518763ffffffff1660e01b815260040161223396959493929190613be7565b600060405180830381600087803b15801561224d57600080fd5b505af1158015612261573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122899190810190613c5a565b612294600188613a28565b815181106122a4576122a46139fc565b6020026020010151836122b79190613bcf565b92505b505098975050505050505050565b3360009081526001602052604081205460ff168280156122e6575080155b80156122f457506000600254115b156123ea576127106002548661230a9190613b0d565b6123149190613b2c565b6001600160a01b03851660009081526004602052604090205490925060ff16156123ea576001600160a01b03861661235e5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee95505b60006064600354846123709190613b0d565b61237a9190613b2c565b6001600160a01b038087166000908152600560209081526040808320938c168352929052908120805492935083929091906123b6908490613bcf565b90915550506001600160a01b038716600090815260066020526040812080548392906123e3908490613bcf565b9091555050505b50949350505050565b600080876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561242f57600080fd5b505afa158015612443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124679190613af0565b90506000886001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a457600080fd5b505afa1580156124b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dc9190613af0565b9050856001600160a01b0316826001600160a01b03161415612509576125028884613bcf565b9250612557565b61254a82878a88600081518110612522576125226139fc565b60200260200101518860008151811061253d5761253d6139fc565b6020026020010151612bb5565b6125549084613bcf565b92505b856001600160a01b0316816001600160a01b031614156125825761257b8784613bcf565b92506125c3565b6125b68187898860018151811061259b5761259b6139fc565b60200260200101518860018151811061253d5761253d6139fc565b6125c09084613bcf565b92505b50509695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000896001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561265d57600080fd5b505afa158015612671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126959190613af0565b905060008a6001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156126d257600080fd5b505afa1580156126e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270a9190613af0565b9050876001600160a01b0316826001600160a01b0316148061273d5750876001600160a01b0316816001600160a01b0316145b6127895760405162461bcd60e51b815260206004820152601960248201527f4572726f723a205f7061727469616c53776170546f6b656e730000000000000060448201526064016101d6565b876001600160a01b0316826001600160a01b031614156127f857899350896127db828a8a8a6000815181106127c0576127c06139fc565b60200260200101518a60008151811061253d5761253d6139fc565b6127e59190613bcf565b93506127f1878a613a28565b9250612849565b89935088612830838a8a8a600181518110612815576128156139fc565b60200260200101518a60018151811061253d5761253d6139fc565b61283a9190613bcf565b9250612846878b613a28565b93505b505097509795505050505050565b80516041146128a85760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207369676e6174757265206c656e677468000000000000000060448201526064016101d6565b60208101516040808301516060840151915163d505accf60e01b815233600482015230602482015260448101869052600f60fc1b606482015260009290921a6084830181905260a4830184905260c4830182905290916001600160a01b0387169063d505accf9060e401600060405180830381600087803b15801561292c57600080fd5b505af1158015612940573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108349085906323b872dd60e01b90608401611cee565b6129996001600160a01b038416836000612e33565b610d386001600160a01b0384168383612e33565b6000612a02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f579092919063ffffffff16565b805190915015610d385780806020019051810190612a209190613cdf565b610d385760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016101d6565b60008115612b9657333b15158015612a975750333214155b612af85760405162461bcd60e51b815260206004820152602c60248201527f4552523a2073686f756c6453656c6c456e7469726542616c616e63652069732060448201526b7472756520666f7220454f4160a01b60648201526084016101d6565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0386169063dd62ed3e9060440160206040518083038186803b158015612b4057600080fd5b505afa158015612b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b789190613ad7565b9050612b8f6001600160a01b03861633308461294c565b9050612bae565b612bab6001600160a01b03851633308661294c565b50815b9392505050565b60007f000000000000000000000000bd54dff32f8d88a64d0adc061e6b96d0630d9a1c6001600160a01b0316866001600160a01b0316148015612bff57506001600160a01b038516155b15612c8657604051632e1a7d4d60e01b8152600481018590527f000000000000000000000000bd54dff32f8d88a64d0adc061e6b96d0630d9a1c6001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612c6657600080fd5b505af1158015612c7a573d6000803e3d6000fd5b50505050839050612e2a565b60006001600160a01b038716612c9d575083612ca8565b612ca8878587612984565b6000612cb387612f6e565b6001600160a01b03861660009081526007602052604090205490915060ff16612d165760405162461bcd60e51b815260206004820152601560248201527415185c99d95d081b9bdd08105d5d1a1bdc9a5e9959605a1b60448201526064016101d6565b6000856001600160a01b03168386604051612d319190613d28565b60006040518083038185875af1925050503d8060008114612d6e576040519150601f19603f3d011682016040523d82523d6000602084013e612d73565b606091505b5050905080612dbc5760405162461bcd60e51b81526020600482015260156024820152744572726f72205377617070696e6720546f6b656e7360581b60448201526064016101d6565b600082612dc88a612f6e565b612dd29190613a28565b905060008111612e245760405162461bcd60e51b815260206004820152601f60248201527f5377617070656420746f20496e76616c696420496e7465726d6564696174650060448201526064016101d6565b93505050505b95945050505050565b801580612ebc5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015612e8257600080fd5b505afa158015612e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eba9190613ad7565b155b612f275760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016101d6565b6040516001600160a01b038316602482015260448101829052610d3890849063095ea7b360e01b90606401611cee565b6060612f668484600085613004565b949350505050565b60006001600160a01b038216612f85575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015612fc457600080fd5b505afa158015612fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffc9190613ad7565b90505b919050565b6060824710156130655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016101d6565b6001600160a01b0385163b6130bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d6565b600080866001600160a01b031685876040516130d89190613d28565b60006040518083038185875af1925050503d8060008114613115576040519150601f19603f3d011682016040523d82523d6000602084013e61311a565b606091505b509150915061312a828286613135565b979650505050505050565b60608315613144575081612bae565b8251156131545782518084602001fd5b8160405162461bcd60e51b81526004016101d69190613d44565b60006020828403121561318057600080fd5b5035919050565b60008083601f84011261319957600080fd5b5081356001600160401b038111156131b057600080fd5b6020830191508360208260051b85010111156131cb57600080fd5b9250929050565b600080602083850312156131e557600080fd5b82356001600160401b038111156131fb57600080fd5b61320785828601613187565b90969095509350505050565b6001600160a01b0381168114611b1957600080fd5b8035612fff81613213565b6000806040838503121561324657600080fd5b823561325181613213565b9150602083013561326181613213565b809150509250929050565b60006020828403121561327e57600080fd5b8135612bae81613213565b8015158114611b1957600080fd5b8035612fff81613289565b60008060008060008060008060e0898b0312156132be57600080fd5b88356132c981613213565b975060208901356132d981613213565b96506040890135955060608901356001600160401b038111156132fb57600080fd5b6133078b828c01613187565b9096509450506080890135925060a089013561332281613213565b915060c089013561333281613289565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561338157613381613343565b604052919050565b60006001600160401b038211156133a2576133a2613343565b5060051b60200190565b600082601f8301126133bd57600080fd5b813560206133d26133cd83613389565b613359565b82815260059290921b840181019181810190868411156133f157600080fd5b8286015b8481101561341557803561340881613213565b83529183019183016133f5565b509695505050505050565b6000601f838184011261343257600080fd5b823560206134426133cd83613389565b82815260059290921b8501810191818101908784111561346157600080fd5b8287015b848110156134f75780356001600160401b03808211156134855760008081fd5b818a0191508a603f83011261349a5760008081fd5b858201356040828211156134b0576134b0613343565b6134c1828b01601f19168901613359565b92508183528c818386010111156134d85760008081fd5b8181850189850137506000908201870152845250918301918301613465565b50979650505050505050565b600080600080600080600080610100898b03121561352057600080fd5b883561352b81613213565b9750602089013561353b81613213565b9650604089013595506060890135945060808901356001600160401b038082111561356557600080fd5b6135718c838d016133ac565b955060a08b013591508082111561358757600080fd5b506135948b828c01613420565b93505060c08901356135a581613213565b915060e089013561333281613289565b600080604083850312156135c857600080fd5b82356135d381613213565b9150602083013561326181613289565b600080604083850312156135f657600080fd5b823561360181613213565b946020939093013593505050565b6000806000806000806000806000806101408b8d03121561362f57600080fd5b6136388b613228565b995061364660208c01613228565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b01356001600160401b038082111561367e57600080fd5b61368a8e838f016133ac565b955060e08d01359150808211156136a057600080fd5b506136ad8d828e01613420565b9350506136bd6101008c01613228565b91506136cc6101208c01613297565b90509295989b9194979a5092959850565b60008083601f8401126136ef57600080fd5b5081356001600160401b0381111561370657600080fd5b6020830191508360208285010111156131cb57600080fd5b60008060008060008060008060006101008a8c03121561373d57600080fd5b6137468a613228565b985061375460208b01613228565b975060408a0135965060608a0135955060808a01356001600160401b038082111561377e57600080fd5b61378a8d838e016136dd565b909750955060a08c01359150808211156137a357600080fd5b6137af8d838e016133ac565b945060c08c01359150808211156137c557600080fd5b506137d28c828d01613420565b9250506137e160e08b01613228565b90509295985092959850929598565b6000806000806040858703121561380657600080fd5b84356001600160401b038082111561381d57600080fd5b61382988838901613187565b9096509450602087013591508082111561384257600080fd5b5061384f87828801613187565b95989497509550505050565b60008060008060006080868803121561387357600080fd5b853561387e81613213565b945060208601359350604086013561389581613213565b925060608601356001600160401b038111156138b057600080fd5b6138bc888289016136dd565b969995985093965092949392505050565b60008060008060008060008060008060006101408c8e0312156138ef57600080fd5b6138f88c613228565b9a5061390660208d01613228565b995060408c0135985060608c0135975060808c0135965060a08c013595506001600160401b038060c08e0135111561393d57600080fd5b61394d8e60c08f01358f016136dd565b909650945060e08d013581101561396357600080fd5b6139738e60e08f01358f016133ac565b9350806101008e0135111561398757600080fd5b506139998d6101008e01358e01613420565b91506139a86101208d01613228565b90509295989b509295989b9093969950565b6000806000606084860312156139cf57600080fd5b83356139da81613213565b92506020840135915060408401356139f181613213565b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613a3a57613a3a613a12565b500390565b6000600019821415613a5357613a53613a12565b5060010190565b60208082526012908201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604082015260600190565b6020808252600d908201526c4869676820536c69707061676560981b604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600060208284031215613ae957600080fd5b5051919050565b600060208284031215613b0257600080fd5b8151612bae81613213565b6000816000190483118215151615613b2757613b27613a12565b500290565b600082613b4957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215613b6057600080fd5b8135612bae81613289565b60008060408385031215613b7e57600080fd5b505080516020909101519092909150565b6001600160a01b039788168152958716602087015260408601949094526060850192909252608084015290921660a082015260c081019190915260e00190565b60008219821115613be257613be2613a12565b500190565b868152602080820187905260a0604083018190528201859052600090869060c08401835b88811015613c39578335613c1e81613213565b6001600160a01b031682529282019290820190600101613c0b565b506001600160a01b0396909616606085015250505060800152949350505050565b60006020808385031215613c6d57600080fd5b82516001600160401b03811115613c8357600080fd5b8301601f81018513613c9457600080fd5b8051613ca26133cd82613389565b81815260059190911b82018301908381019087831115613cc157600080fd5b928401925b8284101561312a57835182529284019290840190613cc6565b600060208284031215613cf157600080fd5b8151612bae81613289565b60005b83811015613d17578181015183820152602001613cff565b838111156108345750506000910152565b60008251613d3a818460208701613cfc565b9190910192915050565b6020815260008251806020840152613d63816040850160208701613cfc565b601f01601f1916919091016040019291505056fef2d3e32195f8631c70e1d996c9bd5d4a3369d0580786dcd662bf13139310355da26469706673582212209232ef239b5c7df53e48870f0da76cddfc1772eb9eda6bb403504ab42f9746ea64736f6c63430008090033