60a06040523060805234801561001457600080fd5b50608051613e7761004c60003960008181610f7001528181610fb00152818161106b015281816110ab01526111d10152613e776000f3fe60806040526004361061025c5760003560e01c806361b5511811610144578063a22cb465116100b6578063c514cc1e1161007a578063c514cc1e14610718578063c87b56dd14610738578063ce4d10bd14610758578063e1984a4714610778578063e985e9c5146107a9578063f2fde38b146107f257600080fd5b8063a22cb46514610661578063aa8badc114610681578063acbca29014610696578063b0d9c37c146106c7578063b88d4fde146106f857600080fd5b806370a082311161010857806370a08231146105b8578063715018a6146105d85780638c0f5318146105ed5780638da5cb5b1461060d57806395d89b411461062c578063a14481941461064157600080fd5b806361b551181461052b5780636352211e14610558578063689ec12b146105785780636a203515146105985780636b8ff5741461026157600080fd5b80632e2ebc1f116101dd5780634f1ef286116101a15780634f1ef286146104835780634f6ccce71461049657806352d1902d146104b65780635c18e55c146104cb5780635da4fabc146104eb5780635faf46bb1461050b57600080fd5b80632e2ebc1f146103e25780632f745c591461040357806330ad6fb5146104235780633659cfe61461044357806342842e0e1461046357600080fd5b8063095ea7b311610224578063095ea7b31461033657806316048d1b1461035657806318160ddd146103835780631f51bd96146103a257806323b872dd146103c257600080fd5b806301e1c8ed1461026157806301ffc9a71461029757806306fdde03146102c7578063077f224a146102dc578063081812fc146102fe575b600080fd5b34801561026d57600080fd5b5061028161027c366004613208565b610812565b60405161028e9190613279565b60405180910390f35b3480156102a357600080fd5b506102b76102b23660046132a2565b6108f6565b604051901515815260200161028e565b3480156102d357600080fd5b50610281610921565b3480156102e857600080fd5b506102fc6102f736600461338b565b6109b3565b005b34801561030a57600080fd5b5061031e610319366004613208565b610b7c565b6040516001600160a01b03909116815260200161028e565b34801561034257600080fd5b506102fc610351366004613403565b610ba3565b34801561036257600080fd5b5061037661037136600461342f565b610cb9565b60405161028e919061344c565b34801561038f57600080fd5b5060fd545b60405190815260200161028e565b3480156103ae57600080fd5b506102fc6103bd3660046134ea565b610de4565b3480156103ce57600080fd5b506102fc6103dd366004613528565b610e40565b3480156103ee57600080fd5b506101635461031e906001600160a01b031681565b34801561040f57600080fd5b5061039461041e366004613403565b610e71565b34801561042f57600080fd5b506102fc61043e36600461342f565b610f07565b34801561044f57600080fd5b506102fc61045e36600461342f565b610f65565b34801561046f57600080fd5b506102fc61047e366004613528565b611045565b6102fc610491366004613569565b611060565b3480156104a257600080fd5b506103946104b1366004613208565b611131565b3480156104c257600080fd5b506103946111c4565b3480156104d757600080fd5b506103946104e6366004613208565b611277565b3480156104f757600080fd5b506102fc6105063660046135b9565b6114d0565b34801561051757600080fd5b506102b7610526366004613208565b611513565b34801561053757600080fd5b5061054b61054636600461342f565b611531565b60405161028e91906135db565b34801561056457600080fd5b5061031e610573366004613208565b6115ce565b34801561058457600080fd5b506102fc61059336600461361f565b61162e565b3480156105a457600080fd5b506102816105b3366004613208565b6116ec565b3480156105c457600080fd5b506103946105d336600461342f565b611745565b3480156105e457600080fd5b506102fc6117cb565b3480156105f957600080fd5b5061054b610608366004613650565b6117df565b34801561061957600080fd5b5061012d546001600160a01b031661031e565b34801561063857600080fd5b50610281611b52565b34801561064d57600080fd5b506102fc61065c366004613403565b611b61565b34801561066d57600080fd5b506102fc61067c3660046134ea565b611b73565b34801561068d57600080fd5b506102fc611b7e565b3480156106a257600080fd5b506102b76106b136600461342f565b6101606020526000908152604090205460ff1681565b3480156106d357600080fd5b506102b76106e2366004613208565b6000908152610161602052604090205460011490565b34801561070457600080fd5b506102fc6107133660046136f6565b611c0a565b34801561072457600080fd5b50610394610733366004613403565b611c3c565b34801561074457600080fd5b50610281610753366004613208565b611ce8565b34801561076457600080fd5b50610281610773366004613208565b611dd4565b34801561078457600080fd5b506102b7610793366004613208565b6000908152610161602052604090205460021490565b3480156107b557600080fd5b506102b76107c4366004613762565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b3480156107fe57600080fd5b506102fc61080d36600461342f565b611e6f565b6000818152610168602052604081208054606092919061083190613790565b80601f016020809104026020016040519081016040528092919081815260200182805461085d90613790565b80156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b5050505050905060006108bc84611ee5565b6040516020016108cc91906137e7565b604051602081830303815290604052905060008251116108ec57806108ee565b815b949350505050565b60006001600160e01b0319821663780e9d6360e01b148061091b575061091b82611f82565b92915050565b606060c9805461093090613790565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90613790565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050905090565b600054610100900460ff16158080156109d35750600054600160ff909116105b806109ed5750303b1580156109ed575060005460ff166001145b610a555760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a78576000805461ff0019166101001790555b33600090815261016060205260409020805460ff1916600117905561016380546001600160a01b0384166001600160a01b0319909116179055610abb8484611fd2565b610ac3612003565b610acb61202a565b610167805460ff191690556040805160608082018352600a8252605060208084018290526064938501849052610165805462ffffff199081166264500a179091558551938401865260058452908301919091529201526101668054909116626450051790558015610b76576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610b8782612059565b50600090815260cd60205260409020546001600160a01b031690565b6000610bae826115ce565b9050806001600160a01b0316836001600160a01b03161415610c1c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a4c565b336001600160a01b0382161480610c385750610c3881336107c4565b610caa5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a4c565b610cb483836120b8565b505050565b60606000610cc683611745565b67ffffffffffffffff811115610cde57610cde6132bf565b604051908082528060200260200182016040528015610d3c57816020015b610d2960405180608001604052806000815260200160001515815260200160608152602001606081525090565b815260200190600190039081610cfc5790505b50905060005b610d4b84611745565b811015610ddd576000610d5e8583610e71565b90506040518060800160405280828152602001610d8b836000908152610161602052604090205460011490565b15158152602001610d9b836116ec565b8152602001610da983610812565b815250838381518110610dbe57610dbe613818565b6020026020010181905250508080610dd590613844565b915050610d42565b5092915050565b336000908152610160602052604090205460ff16610e145760405162461bcd60e51b8152600401610a4c9061385f565b6001600160a01b0391909116600090815261016060205260409020805460ff1916911515919091179055565b610e4a3382612126565b610e665760405162461bcd60e51b8152600401610a4c90613880565b610cb48383836121a4565b6000610e7c83611745565b8210610ede5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a4c565b506001600160a01b0391909116600090815260fb60209081526040808320938352929052205490565b336000908152610160602052604090205460ff16610f375760405162461bcd60e51b8152600401610a4c9061385f565b61016380546001600160a01b0319166001600160a01b0392909216919091179055610167805460ff19169055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610fae5760405162461bcd60e51b8152600401610a4c906138cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ff7600080516020613dbb833981519152546001600160a01b031690565b6001600160a01b03161461101d5760405162461bcd60e51b8152600401610a4c90613919565b61102681612315565b604080516000808252602082019092526110429183919061231d565b50565b610cb483838360405180602001604052806000815250611c0a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156110a95760405162461bcd60e51b8152600401610a4c906138cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110f2600080516020613dbb833981519152546001600160a01b031690565b6001600160a01b0316146111185760405162461bcd60e51b8152600401610a4c90613919565b61112182612315565b61112d8282600161231d565b5050565b600061113c60fd5490565b821061119f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a4c565b60fd82815481106111b2576111b2613818565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112645760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a4c565b50600080516020613dbb83398151915290565b60008161dead611286826115ce565b6001600160a01b031614156112d65760405162461bcd60e51b815260206004820152601660248201527510d85c1cdd5b1948185b1c9958591e481bdc195b995960521b6044820152606401610a4c565b6101675460ff161561131a5760405162461bcd60e51b815260206004820152600d60248201526c4372656174696e67204c6f636b60981b6044820152606401610a4c565b610167805460ff1916600117905561132f3390565b6001600160a01b0316611341846115ce565b6001600160a01b03161461138e5760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c881bd9881d1bdad95b925960621b6044820152606401610a4c565b600083815261016460205260409020546113ea5760405162461bcd60e51b815260206004820152601f60248201527f7761697420666f722074686520636861696e6c696e6b2063616c6c6261636b006044820152606401610a4c565b610bb96113fa3361dead86610e40565b61016354600085815261016160205260409081902054905163546c5d3960e11b81526001600160a01b039092169163a8d8ba729161143e9133918691600401613965565b6020604051808303816000875af115801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190613986565b92507f482ef81c3a576f718fc73d274260200092fc8fc5ff7f5c66419b7e92fb30d2a93384836040516114b693929190613965565b60405180910390a15050610167805460ff19169055919050565b336000908152610160602052604090205460ff166115005760405162461bcd60e51b8152600401610a4c9061385f565b6000918252610164602052604090912055565b600061dead611521836115ce565b6001600160a01b03161492915050565b6060600061153e83611745565b67ffffffffffffffff811115611556576115566132bf565b60405190808252806020026020018201604052801561157f578160200160208202803683370190505b50905060005b61158e84611745565b811015610ddd5761159f8482610e71565b8282815181106115b1576115b1613818565b6020908102919091010152806115c681613844565b915050611585565b600081815260cb60205260408120546001600160a01b03168061091b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a4c565b33611638836115ce565b6001600160a01b03161461168e5760405162461bcd60e51b815260206004820152601760248201527f4e6f74204f776e6572206f66205f63617073756c6549640000000000000000006044820152606401610a4c565b60008281526101686020908152604090912082516116ae9284019061316f565b507ff20a1ee5e47c0c49ee2668dd564cfe56d5bbfacf7a12a8974dc239885c47c23f82826040516116e092919061399f565b60405180910390a15050565b600081815261016160205260409020546060906001141561172657604051806080016040528060428152602001613d796042913992915050565b604051806080016040528060428152602001613d376042913992915050565b60006001600160a01b0382166117af5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a4c565b506001600160a01b0316600090815260cc602052604090205490565b6117d3612488565b6117dd60006124e3565b565b6101675460609060ff16156118265760405162461bcd60e51b815260206004820152600d60248201526c4372656174696e67204c6f636b60981b6044820152606401610a4c565b610167805460ff19166001179055815160009067ffffffffffffffff811115611851576118516132bf565b60405190808252806020026020018201604052801561187a578160200160208202803683370190505b50905060005b8351811015611b405761dead6001600160a01b03166118b78583815181106118aa576118aa613818565b60200260200101516115ce565b6001600160a01b031614156119075760405162461bcd60e51b815260206004820152601660248201527510d85c1cdd5b1948185b1c9958591e481bdc195b995960521b6044820152606401610a4c565b336001600160a01b03166119268583815181106118aa576118aa613818565b6001600160a01b0316146119735760405162461bcd60e51b8152602060048201526014602482015273139bdd0813dddb995c881bd9881d1bdad95b925960621b6044820152606401610a4c565b6000610164600086848151811061198c5761198c613818565b6020026020010151815260200190815260200160002054116119f05760405162461bcd60e51b815260206004820152601f60248201527f7761697420666f722074686520636861696e6c696e6b2063616c6c6261636b006044820152606401610a4c565b610bb9611a193361dead878581518110611a0c57611a0c613818565b6020026020010151610e40565b610163546001600160a01b031663a8d8ba72338361016160008a8881518110611a4457611a44613818565b60200260200101518152602001908152602001600020546040518463ffffffff1660e01b8152600401611a7993929190613965565b6020604051808303816000875af1158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc9190613986565b838381518110611ace57611ace613818565b60209081029190910101527f482ef81c3a576f718fc73d274260200092fc8fc5ff7f5c66419b7e92fb30d2a933848481518110611b0d57611b0d613818565b602002602001015183604051611b2593929190613965565b60405180910390a15080611b3881613844565b915050611880565b50610167805460ff1916905592915050565b606060ca805461093090613790565b611b69612488565b61112d8282612536565b61112d338383612550565b336000908152610160602052604090205460ff16611bae5760405162461bcd60e51b8152600401610a4c9061385f565b6040805160608082018352600a8252605a60208084018290526064938501849052610165805462ffffff1990811662645a0a17909155855193840186526005845290830191909152920152610166805490911662645a05179055565b611c143383612126565b611c305760405162461bcd60e51b8152600401610a4c90613880565b610b768484848461261f565b336000908152610160602052604081205460ff16611c6c5760405162461bcd60e51b8152600401610a4c9061385f565b611c7b61015f80546001019055565b6000611c8761015f5490565b9050611c938482612652565b6000818152610161602052604090819020849055517f851fe174c73582d46dd1ba3ef37ab19cc170720b8af56db57c81174d21326f0590611cd990869084908790613965565b60405180910390a19392505050565b6060611cf461015f5490565b821115611d0f57505060408051602081019091526000815290565b611dae611d1b83611ee5565b611d24846116ec565b60008581526101616020526040902054600114611d5e5760405180604001604052806005815260200164111c9a599d60da1b815250611d7e565b6040518060400160405280600681526020016527b934b3b4b760d11b8152505b611d8786610812565b604051602001611d9a94939291906139b8565b6040516020818303038152906040526127eb565b604051602001611dbe9190613b13565b6040516020818303038152906040529050919050565b6101686020526000908152604090208054611dee90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1a90613790565b8015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b505050505081565b611e77612488565b6001600160a01b038116611edc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4c565b611042816124e3565b60606000611ef283612951565b600101905060008167ffffffffffffffff811115611f1257611f126132bf565b6040519080825280601f01601f191660200182016040528015611f3c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611f7557611f7a565b611f46565b509392505050565b60006001600160e01b031982166380ac58cd60e01b1480611fb357506001600160e01b03198216635b5e139f60e01b145b8061091b57506301ffc9a760e01b6001600160e01b031983161461091b565b600054610100900460ff16611ff95760405162461bcd60e51b8152600401610a4c90613b58565b61112d8282612a29565b600054610100900460ff166117dd5760405162461bcd60e51b8152600401610a4c90613b58565b600054610100900460ff166120515760405162461bcd60e51b8152600401610a4c90613b58565b6117dd612a77565b600081815260cb60205260409020546001600160a01b03166110425760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a4c565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906120ed826115ce565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612132836115ce565b9050806001600160a01b0316846001600160a01b0316148061217957506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b806108ee5750836001600160a01b031661219284610b7c565b6001600160a01b031614949350505050565b826001600160a01b03166121b7826115ce565b6001600160a01b0316146121dd5760405162461bcd60e51b8152600401610a4c90613ba3565b6001600160a01b03821661223f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a4c565b61224c8383836001612aa7565b826001600160a01b031661225f826115ce565b6001600160a01b0316146122855760405162461bcd60e51b8152600401610a4c90613ba3565b600081815260cd6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260cc855283862080546000190190559087168086528386208054600101905586865260cb90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611042612488565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561235057610cb483612be7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123aa575060408051601f3d908101601f191682019092526123a791810190613986565b60015b61240d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a4c565b600080516020613dbb833981519152811461247c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a4c565b50610cb4838383612c83565b61012d546001600160a01b031633146117dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4c565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61112d828260405180602001604052806000815250612ca8565b816001600160a01b0316836001600160a01b031614156125b25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a4c565b6001600160a01b03838116600081815260ce6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61262a8484846121a4565b61263684848484612cdb565b610b765760405162461bcd60e51b8152600401610a4c90613be8565b6001600160a01b0382166126a85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a4c565b600081815260cb60205260409020546001600160a01b03161561270d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a4c565b61271b600083836001612aa7565b600081815260cb60205260409020546001600160a01b0316156127805760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a4c565b6001600160a01b038216600081815260cc602090815260408083208054600101905584835260cb90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80516060908061280b575050604080516020810190915260008152919050565b6000600361281a836002613c3a565b6128249190613c52565b61282f906004613c74565b9050600061283e826020613c3a565b67ffffffffffffffff811115612856576128566132bf565b6040519080825280601f01601f191660200182016040528015612880576020820181803683370190505b5090506000604051806060016040528060408152602001613ddb604091399050600181016020830160005b8681101561290c576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016128ab565b506003860660018114612926576002811461293757612943565b613d3d60f01b600119830152612943565b603d60f81b6000198301525b505050918152949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106129905772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106129bc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106129da57662386f26fc10000830492506010015b6305f5e10083106129f2576305f5e100830492506008015b6127108310612a0657612710830492506004015b60648310612a18576064830492506002015b600a831061091b5760010192915050565b600054610100900460ff16612a505760405162461bcd60e51b8152600401610a4c90613b58565b8151612a639060c990602085019061316f565b508051610cb49060ca90602084019061316f565b600054610100900460ff16612a9e5760405162461bcd60e51b8152600401610a4c90613b58565b6117dd336124e3565b612ab384848484612dd9565b6001811115612b225760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610a4c565b816001600160a01b038516612b7e57612b798160fd8054600083815260fe60205260408120829055600182018355919091527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca2800155565b612ba1565b836001600160a01b0316856001600160a01b031614612ba157612ba18582612e61565b6001600160a01b038416612bbd57612bb881612efe565b612be0565b846001600160a01b0316846001600160a01b031614612be057612be08482612fad565b5050505050565b6001600160a01b0381163b612c545760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a4c565b600080516020613dbb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612c8c83612ff1565b600082511180612c995750805b15610cb457610b768383613031565b612cb28383612652565b612cbf6000848484612cdb565b610cb45760405162461bcd60e51b8152600401610a4c90613be8565b60006001600160a01b0384163b15612dce57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612d1f903390899088908890600401613c93565b6020604051808303816000875af1925050508015612d5a575060408051601f3d908101601f19168201909252612d5791810190613cd0565b60015b612db4573d808015612d88576040519150601f19603f3d011682016040523d82523d6000602084013e612d8d565b606091505b508051612dac5760405162461bcd60e51b8152600401610a4c90613be8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108ee565b506001949350505050565b6001811115610b76576001600160a01b03841615612e1f576001600160a01b038416600090815260cc602052604081208054839290612e19908490613ced565b90915550505b6001600160a01b03831615610b76576001600160a01b038316600090815260cc602052604081208054839290612e56908490613c3a565b909155505050505050565b60006001612e6e84611745565b612e789190613ced565b600083815260fc6020526040902054909150808214612ecb576001600160a01b038416600090815260fb60209081526040808320858452825280832054848452818420819055835260fc90915290208190555b50600091825260fc602090815260408084208490556001600160a01b03909416835260fb81528383209183525290812055565b60fd54600090612f1090600190613ced565b600083815260fe602052604081205460fd8054939450909284908110612f3857612f38613818565b906000526020600020015490508060fd8381548110612f5957612f59613818565b600091825260208083209091019290925582815260fe909152604080822084905585825281205560fd805480612f9157612f91613d04565b6001900381819060005260206000200160009055905550505050565b6000612fb883611745565b6001600160a01b03909316600090815260fb60209081526040808320868452825280832085905593825260fc9052919091209190915550565b612ffa81612be7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6130995760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a4c565b600080846001600160a01b0316846040516130b49190613d1a565b600060405180830381855af49150503d80600081146130ef576040519150601f19603f3d011682016040523d82523d6000602084013e6130f4565b606091505b509150915061311c8282604051806060016040528060278152602001613e1b60279139613125565b95945050505050565b6060831561313457508161313e565b61313e8383613145565b9392505050565b8151156131555781518083602001fd5b8060405162461bcd60e51b8152600401610a4c9190613279565b82805461317b90613790565b90600052602060002090601f01602090048101928261319d57600085556131e3565b82601f106131b657805160ff19168380011785556131e3565b828001600101855582156131e3579182015b828111156131e35782518255916020019190600101906131c8565b506131ef9291506131f3565b5090565b5b808211156131ef57600081556001016131f4565b60006020828403121561321a57600080fd5b5035919050565b60005b8381101561323c578181015183820152602001613224565b83811115610b765750506000910152565b60008151808452613265816020860160208601613221565b601f01601f19169290920160200192915050565b60208152600061313e602083018461324d565b6001600160e01b03198116811461104257600080fd5b6000602082840312156132b457600080fd5b813561313e8161328c565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132fe576132fe6132bf565b604052919050565b600082601f83011261331757600080fd5b813567ffffffffffffffff811115613331576133316132bf565b613344601f8201601f19166020016132d5565b81815284602083860101111561335957600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461104257600080fd5b6000806000606084860312156133a057600080fd5b833567ffffffffffffffff808211156133b857600080fd5b6133c487838801613306565b945060208601359150808211156133da57600080fd5b506133e786828701613306565b92505060408401356133f881613376565b809150509250925092565b6000806040838503121561341657600080fd5b823561342181613376565b946020939093013593505050565b60006020828403121561344157600080fd5b813561313e81613376565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156134dc57603f198984030185528151608081518552888201511515898601528782015181898701526134ab8287018261324d565b915050606080830151925085820381870152506134c8818361324d565b968901969450505090860190600101613473565b509098975050505050505050565b600080604083850312156134fd57600080fd5b823561350881613376565b91506020830135801515811461351d57600080fd5b809150509250929050565b60008060006060848603121561353d57600080fd5b833561354881613376565b9250602084013561355881613376565b929592945050506040919091013590565b6000806040838503121561357c57600080fd5b823561358781613376565b9150602083013567ffffffffffffffff8111156135a357600080fd5b6135af85828601613306565b9150509250929050565b600080604083850312156135cc57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613613578351835292840192918401916001016135f7565b50909695505050505050565b6000806040838503121561363257600080fd5b82359150602083013567ffffffffffffffff8111156135a357600080fd5b6000602080838503121561366357600080fd5b823567ffffffffffffffff8082111561367b57600080fd5b818501915085601f83011261368f57600080fd5b8135818111156136a1576136a16132bf565b8060051b91506136b28483016132d5565b81815291830184019184810190888411156136cc57600080fd5b938501935b838510156136ea578435825293850193908501906136d1565b98975050505050505050565b6000806000806080858703121561370c57600080fd5b843561371781613376565b9350602085013561372781613376565b925060408501359150606085013567ffffffffffffffff81111561374a57600080fd5b61375687828801613306565b91505092959194509250565b6000806040838503121561377557600080fd5b823561378081613376565b9150602083013561351d81613376565b600181811c908216806137a457607f821691505b602082108114156137c557634e487b7160e01b600052602260045260246000fd5b50919050565b600081516137dd818560208601613221565b9290920192915050565b6843617073756c65202360b81b81526000825161380b816009850160208701613221565b9190910160090192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156138585761385861382e565b5060010190565b602080825260079082015266476f206177617960c81b604082015260600190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039390931683526020830191909152604082015260600190565b60006020828403121561399857600080fd5b5051919050565b8281526040602082015260006108ee604083018461324d565b731ec89b985b59488e8890d85c1cdd5b194813919560621b8152600160fd1b601482015284516000906139f2816015850160208a01613221565b7f222c226465736372697074696f6e223a2243617073756c65204e465420666f726015918401918201527f2054686f7246692047616d656c6f6f70222c22696d616765223a22000000000060358201528551613a55816050840160208a01613221565b70222c2261747472696275746573223a5b7b60781b605092909101918201527f2274726169745f74797065223a2243617073756c652054797065222c2276616c6061820152643ab2911d1160d91b60818201528451613abb816086840160208901613221565b6136ea613b03613afd6086848601017f227d2c7b2274726169745f74797065223a224e616d65222c2276616c7565223a8152601160f91b602082015260210190565b876137cb565b63227d5d7d60e01b815260040190565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613b4b81601d850160208701613221565b91909101601d0192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008219821115613c4d57613c4d61382e565b500190565b600082613c6f57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613c8e57613c8e61382e565b500290565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613cc69083018461324d565b9695505050505050565b600060208284031215613ce257600080fd5b815161313e8161328c565b600082821015613cff57613cff61382e565b500390565b634e487b7160e01b600052603160045260246000fd5b60008251613d2c818460208701613221565b919091019291505056fe697066733a2f2f626166796265696375706b73727773757070726571766d7a756173747132766769723234757066703365686e696d74756674776271737470756b69697066733a2f2f6261667962656966366e6b37617233656e70377637727a66767367766a346e6f72756a78776b647832707937376965377a61676e66336972747969360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220dbf29a0e53a5e35d45f191930690c51724346297201a678a12f6f2c01721aee364736f6c634300080c0033