60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614a1b80620000f36000396000f3fe6080604052600436106103505760003560e01c806379ddeee1116101c6578063c885bc58116100f7578063eb990c5911610095578063f23a6e611161006f578063f23a6e6114610a2b578063f2fde38b14610a70578063f466d3e314610a90578063f9b4809f14610ab057600080fd5b8063eb990c59146109d5578063ebf30a56146109f5578063f11d9bc914610a0b57600080fd5b8063d769d23a116100d1578063d769d23a14610938578063dd62ed3e14610958578063dfa3ff6114610978578063e57d4adb146109a557600080fd5b8063c885bc58146108e3578063cda6b847146108f8578063d17e02261461091857600080fd5b806395d89b4111610164578063a457c2d71161013e578063a457c2d714610869578063a9059cbb14610889578063b187bd26146108a9578063c1d5725f146108c357600080fd5b806395d89b411461081e5780639d1b464a146108335780639d76ea581461084957600080fd5b806387606522116101a057806387606522146107835780638a3ea1e2146107a35780638b3e98f5146107d05780638da5cb5b1461080057600080fd5b806379ddeee11461072d5780637b7f2c7e146107435780638684e1cb1461076357600080fd5b806339509351116102a0578063574c17401161023e57806370a082311161021857806370a08231146106b7578063715018a6146106ed57806373cf575a1461070257806378a334101461071757600080fd5b8063574c17401461062a5780635825884f1461064a57806361c44b431461066a57600080fd5b806348aa62081161027a57806348aa62081461058157806350be99ad1461059457806352709725146105a9578063559566b9146105c957600080fd5b806339509351146105095780633ab52456146105295780633d27abd51461056157600080fd5b806323b872dd1161030d5780632ac12622116102e75780632ac1262214610487578063313ce567146104b75780633235c1d2146104d357806338c67391146104e957600080fd5b806323b872dd1461042757806326a4e8d2146104475780632824392e1461046757600080fd5b806306fdde0314610355578063095ea7b31461038057806318160ddd146103b057806318b20071146103cf578063207e61b2146103f157806322407e5f14610411575b600080fd5b34801561036157600080fd5b5061036a610ad0565b6040516103779190613e93565b60405180910390f35b34801561038c57600080fd5b506103a061039b366004613ebb565b610b62565b6040519015158152602001610377565b3480156103bc57600080fd5b506099545b604051908152602001610377565b3480156103db57600080fd5b506103ef6103ea366004613ee7565b610b7c565b005b3480156103fd57600080fd5b506103ef61040c366004613ee7565b610bc9565b34801561041d57600080fd5b506103c160db5481565b34801561043357600080fd5b506103a0610442366004613f00565b610c26565b34801561045357600080fd5b506103ef610462366004613f41565b610c4c565b34801561047357600080fd5b506103c1610482366004613ebb565b610cde565b34801561049357600080fd5b506103a06104a2366004613ee7565b60ce6020526000908152604090205460ff1681565b3480156104c357600080fd5b5060405160128152602001610377565b3480156104df57600080fd5b506103c160dc5481565b3480156104f557600080fd5b506103ef610504366004613f6c565b610da7565b34801561051557600080fd5b506103a0610524366004613ebb565b610df9565b34801561053557600080fd5b5060d654610549906001600160a01b031681565b6040516001600160a01b039091168152602001610377565b34801561056d57600080fd5b506103c161057c366004613f41565b610e1b565b6103ef61058f366004614069565b610e5d565b3480156105a057600080fd5b506103ef610efe565b3480156105b557600080fd5b5060df54610549906001600160a01b031681565b3480156105d557600080fd5b506105e96105e4366004613f41565b6110cd565b6040805183518152602080850151908201528382015191810191909152606080840151908201526080928301519281019290925260a082015260c001610377565b34801561063657600080fd5b506103ef610645366004613f41565b611168565b34801561065657600080fd5b506103ef610665366004613f41565b6111fa565b34801561067657600080fd5b5061068a610685366004613ee7565b6112b1565b604080519687529415156020870152938501929092526060840152608083015260a082015260c001610377565b3480156106c357600080fd5b506103c16106d2366004613f41565b6001600160a01b031660009081526097602052604090205490565b3480156106f957600080fd5b506103ef611389565b34801561070e57600080fd5b506103ef61139b565b34801561072357600080fd5b506103c160dd5481565b34801561073957600080fd5b506103c160ca5481565b34801561074f57600080fd5b506103ef61075e3660046140c4565b611587565b34801561076f57600080fd5b506103ef61077e36600461410a565b6115ca565b34801561078f57600080fd5b5060d154610549906001600160a01b031681565b3480156107af57600080fd5b506103c16107be366004613ee7565b60cd6020526000908152604090205481565b3480156107dc57600080fd5b506103a06107eb366004613f41565b60d86020526000908152604090205460ff1681565b34801561080c57600080fd5b506033546001600160a01b0316610549565b34801561082a57600080fd5b5061036a6117e6565b34801561083f57600080fd5b506103c160cb5481565b34801561085557600080fd5b5060d454610549906001600160a01b031681565b34801561087557600080fd5b506103a0610884366004613ebb565b6117f5565b34801561089557600080fd5b506103a06108a4366004613ebb565b61187b565b3480156108b557600080fd5b5060d9546103a09060ff1681565b3480156108cf57600080fd5b506103ef6108de366004613f00565b611889565b3480156108ef57600080fd5b506103ef611982565b34801561090457600080fd5b506103ef610913366004613ee7565b611ac2565b34801561092457600080fd5b506103ef610933366004613ee7565b611de2565b34801561094457600080fd5b506103ef610953366004614204565b611e3f565b34801561096457600080fd5b506103c16109733660046142c6565b611efe565b34801561098457600080fd5b506103c1610993366004613ee7565b60cc6020526000908152604090205481565b3480156109b157600080fd5b506103a06109c0366004613ee7565b60cf6020526000908152604090205460ff1681565b3480156109e157600080fd5b506103ef6109f03660046142ff565b611f29565b348015610a0157600080fd5b506103c160d05481565b348015610a1757600080fd5b506103ef610a26366004614345565b612134565b348015610a3757600080fd5b50610a57610a46366004614371565b63f23a6e6160e01b95945050505050565b6040516001600160e01b03199091168152602001610377565b348015610a7c57600080fd5b506103ef610a8b366004613f41565b61225d565b348015610a9c57600080fd5b5061068a610aab366004613ebb565b6122d3565b348015610abc57600080fd5b506103ef610acb366004614440565b61237a565b6060609a8054610adf90614528565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b90614528565b8015610b585780601f10610b2d57610100808354040283529160200191610b58565b820191906000526020600020905b815481529060010190602001808311610b3b57829003601f168201915b5050505050905090565b600033610b708185856124cb565b60019150505b92915050565b6033546001600160a01b0316331480610b9f575060df546001600160a01b031633145b610bc45760405162461bcd60e51b8152600401610bbb90614562565b60405180910390fd5b60cb55565b6033546001600160a01b0316331480610bec575060df546001600160a01b031633145b610c085760405162461bcd60e51b8152600401610bbb90614562565b60da54610c1690600a614691565b610c20908261469d565b60ca5550565b600033610c348582856125ef565b610c3f858585612669565b60019150505b9392505050565b6033546001600160a01b0316331480610c6f575060df546001600160a01b031633145b610c8b5760405162461bcd60e51b8152600401610bbb90614562565b6001600160a01b0381163b610cb25760405162461bcd60e51b8152600401610bbb906146b4565b60d480546001600160a01b039092166001600160a01b0319928316811790915560d58054909216179055565b6001600160a01b038216600090815260d3602090815260408083208484528252808320815161012081018352815460ff90811615158252600183015494820194909452600282015492810192909252600381015460608301526004810154608083018190526005820154909316151560a0830152600681015460c0830152600781015460e083015260080154610100820152904283610d7d8284612814565b600087815260cd602052604081205491925090610d9b908390612820565b98975050505050505050565b6033546001600160a01b0316331480610dca575060df546001600160a01b031633145b610de65760405162461bcd60e51b8152600401610bbb90614562565b60d9805460ff1916911515919091179055565b600033610b70818585610e0c8383611efe565b610e1691906146fc565b6124cb565b6001600160a01b038116600090815260d260205260408120600101544282610e438284612814565b90506000610e5382610e10612820565b9695505050505050565b610e6883838361282c565b610ea65760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c995c5d595cdd608a1b6044820152606401610bbb565b600083815260ce602052604090819020805460ff19166001179055517f54678dc9d869598d370822b8b755057b9e88b917dcd9e2565a2d970c1ba13ba090610ef19085815260200190565b60405180910390a1505050565b610f06612850565b60d954339060ff1615610f2b5760405162461bcd60e51b8152600401610bbb9061470f565b6000610f36826128a9565b905060008111610f805760405162461bcd60e51b8152602060048201526015602482015274139bc81c995dd85c99081d1bc81c995a5b9d995cdd605a1b6044820152606401610bbb565b6001600160a01b038216600090815260d26020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015281610ff25760405162461bcd60e51b8152600401610bbb90614736565b60608101516110019083612972565b6001600160a01b038416600090815260d2602052604081206003810192909255600282018190558154849291906110399084906146fc565b90915550506001600160a01b038316600090815260d26020526040812042600182015560ca5460049091015560dd80548492906110779084906146fc565b9091555050604080518381526001600160a01b03851660208201527f1fb6e3d7cae02b590e0aeed7ed3fd02a558811be73cdea80d1b42a0970b8b81b91015b60405180910390a15050506110cb6001606555565b565b6110ff6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60008061110b846128a9565b6001600160a01b03909416600090815260d26020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460808201529492505050565b6033546001600160a01b031633148061118b575060df546001600160a01b031633145b6111a75760405162461bcd60e51b8152600401610bbb90614562565b6001600160a01b0381163b6111ce5760405162461bcd60e51b8152600401610bbb906146b4565b60d680546001600160a01b039092166001600160a01b0319928316811790915560d78054909216179055565b6033546001600160a01b031633148061121d575060df546001600160a01b031633145b6112395760405162461bcd60e51b8152600401610bbb90614562565b6001600160a01b03811661128f5760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a20697320746865207a65726f2061646472657373000000006044820152606401610bbb565b60df80546001600160a01b0319166001600160a01b0392909216919091179055565b6000808080808080336001600160a01b038116600090815260d3602090815260408083208c84528252808320815161012081018352815460ff9081161515825260018301549482019490945260028201549281019290925260038101546060830152600481015460808301526005810154909216151560a0820152600682015460c0820152600782015460e0820152600890910154610100820152919250611359838b61297e565b602083015160a08401516060850151608086015160c090960151929e919d509b5093995097509550909350505050565b611391612a61565b6110cb6000612a8b565b6113a3612850565b33600081815260d8602052604090205460ff16156113d35760405162461bcd60e51b8152600401610bbb9061476d565b6001600160a01b038116600090815260d260205260409020546114385760405162461bcd60e51b815260206004820152601a60248201527f446f206e6f74206861766520656e6f756768207374616b65732e0000000000006044820152606401610bbb565b6000611443826128a9565b9050801561148e576001600160a01b038216600090815260d260205260409020600301546114719082612972565b6001600160a01b038316600090815260d260205260409020600301555b6001600160a01b038216600090815260d2602052604081208054828255600290910182905560dd8054919283926114c6908490614795565b909155505060d5546001600160a01b031663a9059cbb846114e785856146fc565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906147a8565b506040518181527f51d10941e702617881936f8c35fbf114bd9bae707bdfd7e2f35f9ce2c5073e48906020016110b6565b6033546001600160a01b03163314806115aa575060df546001600160a01b031633145b6115c65760405162461bcd60e51b8152600401610bbb90614562565b5050565b6115d2612850565b336000805b83518110156117255760008482815181106115f4576115f46147c5565b6020908102919091018101516001600160a01b038616600090815260d383526040808220838352909352919091205490915060ff166116695760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e48155b9cdd1858dad959607a1b6044820152606401610bbb565b6000611675858361297e565b9050600081116116975760405162461bcd60e51b8152600401610bbb90614736565b6001600160a01b038516600090815260d360209081526040808320858452909152812060060180548392906116cd9084906146fc565b90915550506001600160a01b038516600090815260d360209081526040808320858452909152812060078101919091554260049091015561170e81856146fc565b93505050808061171d906147db565b9150506115d7565b5060d55460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d91906147a8565b507f602ea8560caae64d0b7e291a42c0a32c54e0c95013d719522056a7009bd16fe182846040516117cf9291906147f4565b60405180910390a150506117e36001606555565b50565b6060609b8054610adf90614528565b600033816118038286611efe565b9050838110156118635760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bbb565b61187082868684036124cb565b506001949350505050565b600033610b70818585612669565b611891612850565b60008061189e8484612add565b91509150600082116118ea5760405162461bcd60e51b81526020600482015260156024820152742737902a37b5b2b739903a37903a3930b739b332b960591b6044820152606401610bbb565b6033546001600160a01b031633146119135761191384336033546001600160a01b031684612bb3565b61192f6119286033546001600160a01b031690565b8684612cdc565b604080516001600160a01b0387168152602081018490527f0bd41764e6afbb4cef51327da8ad5f2a1ac1927c67b822891f78cd1678fc112a910160405180910390a1505061197d6001606555565b505050565b61198a612850565b336000611996826128a9565b9050600081116119b85760405162461bcd60e51b8152600401610bbb90614736565b6001600160a01b038216600090815260d260205260409020600301546119de9082612972565b6001600160a01b03838116600081815260d26020526040808220600381019590955560029094015560d554925163a9059cbb60e01b815260048101919091526024810184905291169063a9059cbb906044016020604051808303816000875af1158015611a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7391906147a8565b50604080516001600160a01b0384168152602081018390527ffb07b261e282792992ce71b93bce0fed294a0f2fed4a3da269237f00f885ed67910160405180910390a150506110cb6001606555565b611aca612850565b60d95460ff1615611aed5760405162461bcd60e51b8152600401610bbb9061470f565b33600090815260d8602052604090205460ff1615611b1d5760405162461bcd60e51b8152600401610bbb9061476d565b60d4546001600160a01b0316611b675760405162461bcd60e51b815260206004820152600f60248201526e139bc818dbdb9d1c9858dd081cd95d608a1b6044820152606401610bbb565b60db54811015611bc45760405162461bcd60e51b815260206004820152602260248201527f596f75206d757374207374616b65206174206c656173742031303020746f6b656044820152616e7360f01b6064820152608401610bbb565b60d55481906001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c40919061484a565b1015611c8e5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f7567682062616c616e636500006044820152606401610bbb565b33611c98816128a9565b6001600160a01b038216600090815260d2602052604081206002810192909255815484929190611cc99084906146fc565b90915550506001600160a01b038116600090815260d26020526040812042600182015560ca5460049091015560dd8054849290611d079084906146fc565b909155505060d5546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9591906147a8565b50604080518381526001600160a01b03831660208201527f1fb6e3d7cae02b590e0aeed7ed3fd02a558811be73cdea80d1b42a0970b8b81b910160405180910390a1506117e36001606555565b6033546001600160a01b0316331480611e05575060df546001600160a01b031633145b611e215760405162461bcd60e51b8152600401610bbb90614562565b60da54611e2f90600a614691565b611e39908261469d565b60db5550565b6033546001600160a01b0316331480611e62575060df546001600160a01b031633145b611e7e5760405162461bcd60e51b8152600401610bbb90614562565b60005b825181101561197d57818181518110611e9c57611e9c6147c5565b602002602001015160d86000858481518110611eba57611eba6147c5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ef6816147db565b915050611e81565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b600054610100900460ff1615808015611f495750600054600160ff909116105b80611f635750303b158015611f63575060005460ff166001145b611fc65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bbb565b6000805460ff191660011790558015611fe9576000805461ff0019166101001790555b611ff1612e09565b60d480546001600160a01b038088166001600160a01b0319928316811790935560d5805483168417905560d680549188169183168217905560d780549092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120929190614863565b60ff1660da8190556120a590600a614691565b6120af908461469d565b60ca5560cb82905560d9805460ff1916905560da546120cf90600a614691565b6120da90600161469d565b60db55600160dc55600060dd55801561212d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b3360d754604051630cd2421b60e21b8152600481018690526001600160a01b039283169290911690633349086c90602401602060405180830381865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190614886565b6001600160a01b031614806121c557506033546001600160a01b031633145b61221d5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c79204c4c43206f722041646d696e20616c6c6f77656420746f2075706460448201526261746560e81b6064820152608401610bbb565b600083815260cd6020526040902082905560da5461223c90600a614691565b612246908261469d565b600093845260cc6020526040909320929092555050565b612265612a61565b6001600160a01b0381166122ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bbb565b6117e381612a8b565b6001600160a01b038216600090815260d3602090815260408083208484528252808320815161012081018352815460ff9081161515825260018301549482019490945260028201549281019290925260038101546060830152600481015460808301526005810154909216151560a0820152600682015460c0820152600782015460e082015260089091015461010082015281908190819081908190816113598a8a61297e565b8651855160208601516000926123949290918a9190612e38565b90506123a88184886000602002015161282c565b6123e65760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c995c5d595cdd608a1b6044820152606401610bbb565b600081815260cf60205260409020805460ff191660011790556124116033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461244e5760208089015187820151885192880151885161244e94916124499161469d565b612e9d565b6020860151865186516124659291908a90886130ab565b60208087015187518a518851604080516001600160a01b0393841681529586018d90528501528593928116929116907f45067ce1c196e0d92cfcb081178f2fc7fb78ffb16a640b7ba555c3aeae5b80869060600160405180910390a45050505050505050565b6001600160a01b03831661252d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bbb565b6001600160a01b03821661258e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bbb565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006125fb8484611efe565b9050600019811461266357818110156126565760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bbb565b61266384848484036124cb565b50505050565b6001600160a01b0383166126cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bbb565b6001600160a01b03821661272f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bbb565b6001600160a01b038316600090815260976020526040902054818110156127a75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bbb565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128079086815260200190565b60405180910390a3612663565b6000610c458284614795565b6000610c4582846148a3565b600061283984848461376c565b1561284657506001610c45565b5060009392505050565b6002606554036128a25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bbb565b6002606555565b600080806128b684610e1b565b9050801561296b576001600160a01b038416600090815260d2602052604081208054600382015460049092015490926129076103e86129016128fa85612238612820565b87906137ef565b90612820565b9050600061292e8661292860da54600a6129219190614691565b8590612820565b906137ef565b6001600160a01b038a16600090815260d26020526040902060020154909150849061295990836146fc565b6129639190614795565b965050505050505b5092915050565b6000610c4582846146fc565b6001600160a01b038216600090815260d3602090815260408083208484528252808320815161012081018352815460ff9081161515825260018301549482019490945260028201549281019290925260038101546060830152600481015460808301526005810154909216151560a0820152600682015460c0820152600782015460e08201526008909101546101008201528180612a1c8686610cde565b90508015612a52576000612a4284610100015185602001516137ef90919063ffffffff16565b9050612a4e81836137ef565b9250505b60e0830151610e5390836146fc565b6033546001600160a01b031633146110cb5760405162461bcd60e51b8152600401610bbb90614562565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008060008490506000612b6a670de0b6b3a7640000612901846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b589190614863565b612b6390600a6148c5565b88906137ef565b90506000612ba460da54600a612b809190614691565b60cb5461292890612b92906064612820565b6129018a670de0b6b3a7640000612820565b945090925050505b9250929050565b6040516370a0823160e01b81526001600160a01b038481166004830152859183918316906370a0823190602401602060405180830381865afa158015612bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c21919061484a565b1015612c3f5760405162461bcd60e51b8152600401610bbb906148d4565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015283919083169063dd62ed3e90604401602060405180830381865afa158015612c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb2919061484a565b1015612cd05760405162461bcd60e51b8152600401610bbb90614901565b61212d818585856137fb565b60d4546040516370a0823160e01b81526001600160a01b03858116600483015290911690829082906370a0823190602401602060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4e919061484a565b1015612d6c5760405162461bcd60e51b8152600401610bbb906148d4565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015283919083169063dd62ed3e90604401602060405180830381865afa158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf919061484a565b1015612dfd5760405162461bcd60e51b8152600401610bbb90614901565b612663818585856137fb565b600054610100900460ff16612e305760405162461bcd60e51b8152600401610bbb9061492e565b6110cb613855565b6040516bffffffffffffffffffffffff19606086811b821660208401526034830186905284811b821660548401526068830184905230901b166088820152600090609c016040516020818303038152906040528051906020012090505b949350505050565b60008490506000670de0b6b3a7640000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0f9190614863565b612f1a90600a6148c5565b612f24908561469d565b612f2e91906148a3565b6040516370a0823160e01b81526001600160a01b03878116600483015291925082918416906370a0823190602401602060405180830381865afa158015612f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9d919061484a565b1015612fbb5760405162461bcd60e51b8152600401610bbb906148d4565b604051636eb1769f60e11b81526001600160a01b03868116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa15801561300a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302e919061484a565b101561304c5760405162461bcd60e51b8152600401610bbb90614901565b6000606460d0548361305e919061469d565b61306891906148a3565b905060006130768284614795565b9050613084888888846137fb565b6130a1888861309b6033546001600160a01b031690565b856137fb565b5050505050505050565b60d95460ff16156130ce5760405162461bcd60e51b8152600401610bbb9061470f565b6001600160a01b038516600090815260d8602052604090205460ff16156131075760405162461bcd60e51b8152600401610bbb9061476d565b600083815260cc60205260409020546131625760405162461bcd60e51b815260206004820152601b60248201527f52656e7420416d6f756e74206e6f7420646566696e65642079657400000000006044820152606401610bbb565b600083815260cd60205260409020546131bd5760405162461bcd60e51b815260206004820152601760248201527f52656e7420506572696f64206e6f7420646566696e65640000000000000000006044820152606401610bbb565b60d6546001600160a01b03166132075760405162461bcd60e51b815260206004820152600f60248201526e139bc818dbdb9d1c9858dd081cd95d608a1b6044820152606401610bbb565b60dc548210156132595760405162461bcd60e51b815260206004820152601c60248201527f596f75206d757374207374616b65206d696e696d756d20746f6b656e000000006044820152606401610bbb565b6001600160a01b038416600090815260d3602090815260408083208684528252808320815161012081018352815460ff908116151580835260018401549583019590955260028301549382019390935260038201546060820152600482015460808201526005820154909216151560a0830152600681015460c0830152600781015460e08301526008015461010082015291036134765760d754604051627eeac760e11b81526001600160a01b038781166004830152602482018790528592169062fdd58e90604401602060405180830381865afa15801561333f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613363919061484a565b10156133b15760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f7567682062616c616e636500006044820152606401610bbb565b60d75460405163e985e9c560e01b81526001600160a01b0387811660048301523060248301529091169063e985e9c590604401602060405180830381865afa158015613401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342591906147a8565b6134715760405162461bcd60e51b815260206004820152601a60248201527f446f6573206e6f742068617665207065726d697373696f6e732e0000000000006044820152606401610bbb565b613537565b613480858561297e565b60e0820152426080820152602081015161349b908490614795565b6020820152600160a08201526001600160a01b038516600090815260d3602090815260408083208784528252918290208351815490151560ff19918216178255918401516001820155918301516002830155606083015160038301556080830151600483015560a08301516005830180549115159190921617905560c0820151600682015560e082015160078201556101008201516008909101555b6001600160a01b038616600090815260d360209081526040808320878452825291829020825161012081018452815460ff9081161515825260018301549382018481526002840154958301959095526003830154606083015260048301546080830152600583015416151560a0820152600682015460c0820152600782015460e08201526008909101546101008201529185916135d59083906146fc565b9052506001815260408101859052600060a08201526135f4878661297e565b60e08201908152426060830181815260808401918252600088815260cc602090815260408083205461010088019081526001600160a01b038e16845260d383528184208c855283528184208851815490151560ff19918216178255938901516001820155918801516002830155935160038201559351600485015560a08601516005850180549115159190921617905560c0850151600684015592516007830155516008909101558251151590036137115760d754604051637921219560e11b81526001600160a01b039091169063f242432a906136de90899030908a908a908a90600401614979565b600060405180830381600087803b1580156136f857600080fd5b505af115801561370c573d6000803e3d6000fd5b505050505b604080516001600160a01b03808a16825288166020820152908101869052606081018590527fb187060181d1f9d64953ba8dc5e8f0fe487d81211da0ae4b2a7eca6acf7b57f19060800160405180910390a150505050505050565b6000806137c6856040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b9050826001600160a01b03166137dc8286613885565b6001600160a01b03161495945050505050565b6000610c45828461469d565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526126639085906138a9565b600054610100900460ff1661387c5760405162461bcd60e51b8152600401610bbb9061492e565b6110cb33612a8b565b6000806000613894858561397e565b915091506138a1816139e9565b509392505050565b60006138fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b9f9092919063ffffffff16565b905080516000148061391f57508080602001905181019061391f91906147a8565b61197d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bbb565b60008082516041036139b45760208301516040840151606085015160001a6139a887828585613bae565b94509450505050612bac565b82516040036139dd57602083015160408401516139d2868383613c9b565b935093505050612bac565b50600090506002612bac565b60008160048111156139fd576139fd6149b3565b03613a055750565b6001816004811115613a1957613a196149b3565b03613a665760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610bbb565b6002816004811115613a7a57613a7a6149b3565b03613ac75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610bbb565b6003816004811115613adb57613adb6149b3565b03613b335760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610bbb565b6004816004811115613b4757613b476149b3565b036117e35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610bbb565b6060612e958484600085613cca565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613be55750600090506003613c92565b8460ff16601b14158015613bfd57508460ff16601c14155b15613c0e5750600090506004613c92565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613c62573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c8b57600060019250925050613c92565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01613cbc87828885613bae565b935093505050935093915050565b606082471015613d2b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bbb565b600080866001600160a01b03168587604051613d4791906149c9565b60006040518083038185875af1925050503d8060008114613d84576040519150601f19603f3d011682016040523d82523d6000602084013e613d89565b606091505b5091509150613d9a87838387613da5565b979650505050505050565b60608315613e14578251600003613e0d576001600160a01b0385163b613e0d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bbb565b5081612e95565b612e958383815115613e295781518083602001fd5b8060405162461bcd60e51b8152600401610bbb9190613e93565b60005b83811015613e5e578181015183820152602001613e46565b50506000910152565b60008151808452613e7f816020860160208601613e43565b601f01601f19169290920160200192915050565b602081526000610c456020830184613e67565b6001600160a01b03811681146117e357600080fd5b60008060408385031215613ece57600080fd5b8235613ed981613ea6565b946020939093013593505050565b600060208284031215613ef957600080fd5b5035919050565b600080600060608486031215613f1557600080fd5b8335613f2081613ea6565b92506020840135613f3081613ea6565b929592945050506040919091013590565b600060208284031215613f5357600080fd5b8135610c4581613ea6565b80151581146117e357600080fd5b600060208284031215613f7e57600080fd5b8135610c4581613f5e565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613fc257613fc2613f89565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ff157613ff1613f89565b604052919050565b600082601f83011261400a57600080fd5b813567ffffffffffffffff81111561402457614024613f89565b614037601f8201601f1916602001613fc8565b81815284602083860101111561404c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561407e57600080fd5b83359250602084013567ffffffffffffffff81111561409c57600080fd5b6140a886828701613ff9565b92505060408401356140b981613ea6565b809150509250925092565b600080604083850312156140d757600080fd5b50508035926020909101359150565b600067ffffffffffffffff82111561410057614100613f89565b5060051b60200190565b6000602080838503121561411d57600080fd5b823567ffffffffffffffff81111561413457600080fd5b8301601f8101851361414557600080fd5b8035614158614153826140e6565b613fc8565b81815260059190911b8201830190838101908783111561417757600080fd5b928401925b82841015613d9a5783358252928401929084019061417c565b600082601f8301126141a657600080fd5b813560206141b6614153836140e6565b82815260059290921b840181019181810190868411156141d557600080fd5b8286015b848110156141f95780356141ec81613f5e565b83529183019183016141d9565b509695505050505050565b6000806040838503121561421757600080fd5b823567ffffffffffffffff8082111561422f57600080fd5b818501915085601f83011261424357600080fd5b81356020614253614153836140e6565b82815260059290921b8401810191818101908984111561427257600080fd5b948201945b8386101561429957853561428a81613ea6565b82529482019490820190614277565b965050860135925050808211156142af57600080fd5b506142bc85828601614195565b9150509250929050565b600080604083850312156142d957600080fd5b82356142e481613ea6565b915060208301356142f481613ea6565b809150509250929050565b6000806000806080858703121561431557600080fd5b843561432081613ea6565b9350602085013561433081613ea6565b93969395505050506040820135916060013590565b60008060006060848603121561435a57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a0868803121561438957600080fd5b853561439481613ea6565b945060208601356143a481613ea6565b93506040860135925060608601359150608086013567ffffffffffffffff8111156143ce57600080fd5b6143da88828901613ff9565b9150509295509295909350565b600082601f8301126143f857600080fd5b614400613f9f565b80604084018581111561441257600080fd5b845b8181101561443557803561442781613ea6565b845260209384019301614414565b509095945050505050565b6000806000806000806000610140888a03121561445c57600080fd5b61446689896143e7565b96506040880135955061447c8960608a016143e7565b94508860bf89011261448d57600080fd5b614495613f9f565b8060e08a018b8111156144a757600080fd5b60a08b015b818110156144c45780358452602093840193016144ac565b5090955035905067ffffffffffffffff808211156144e157600080fd5b6144ed8b838c01613ff9565b94506101008a013591508082111561450457600080fd5b506145118a828b01613ff9565b925050610120880135905092959891949750929550565b600181811c9082168061453c57607f821691505b60208210810361455c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156145e85781600019048211156145ce576145ce614597565b808516156145db57918102915b93841c93908002906145b2565b509250929050565b6000826145ff57506001610b76565b8161460c57506000610b76565b8160018114614622576002811461462c57614648565b6001915050610b76565b60ff84111561463d5761463d614597565b50506001821b610b76565b5060208310610133831016604e8410600b841016171561466b575081810a610b76565b61467583836145ad565b806000190482111561468957614689614597565b029392505050565b6000610c4583836145f0565b8082028115828204841417610b7657610b76614597565b60208082526028908201527f546865206164647265737320646f6573206e6f7420706f696e7420746f20612060408201526718dbdb9d1c9858dd60c21b606082015260800190565b80820180821115610b7657610b76614597565b6020808252600d908201526c14de5cdd195b4814185d5cd959609a1b604082015260600190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468656e2030000000604082015260600190565b6020808252600e908201526d1058d8dbdd5b9d08131bd8dad95960921b604082015260600190565b81810381811115610b7657610b76614597565b6000602082840312156147ba57600080fd5b8151610c4581613f5e565b634e487b7160e01b600052603260045260246000fd5b6000600182016147ed576147ed614597565b5060010190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561483d57845183529383019391830191600101614821565b5090979650505050505050565b60006020828403121561485c57600080fd5b5051919050565b60006020828403121561487557600080fd5b815160ff81168114610c4557600080fd5b60006020828403121561489857600080fd5b8151610c4581613ea6565b6000826148c057634e487b7160e01b600052601260045260246000fd5b500490565b6000610c4560ff8416836145f0565b602080825260139082015272496e737566666963656e742042616c616e636560681b604082015260600190565b602080825260139082015272139bdd08195b9bdd59da08185c1c1c9bdd985b606a1b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090613d9a90830184613e67565b634e487b7160e01b600052602160045260246000fd5b600082516149db818460208701613e43565b919091019291505056fea264697066735822122019050b5d6ccd5ebbb10fc77988f564aa4d311a58b954b1b8717ba2f9fba7077364736f6c63430008150033