0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6125888061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063778b75c21161008c578063a41a54a611610066578063a41a54a6146101bf578063cdac4745146101d2578063f2fde38b146101e5578063ffa0f0a5146101f857600080fd5b8063778b75c21461017e5780637db127df146101915780638da5cb5b146101a457600080fd5b80635f197aa3116100bd5780635f197aa31461014e5780636db99c6d14610161578063715018a61461017457600080fd5b80630c7699c4146100e45780630f14d01a1461010e5780632254adf71461012e575b600080fd5b6100f76100f2366004611a14565b61022a565b60405160ff90911681526020015b60405180910390f35b61012161011c366004611893565b61025e565b6040516101059190611fe7565b61014161013c366004611503565b61054a565b6040516101059190611f99565b6100f761015c366004611a14565b610699565b6100f761016f366004611a14565b6106a9565b61017c6106b9565b005b61014161018c366004611752565b610724565b61017c61019f36600461159f565b610908565b6000546040516001600160a01b039091168152602001610105565b6101416101cd366004611752565b6109a3565b6101416101e036600461163f565b610b5a565b61017c6101f33660046114e0565b610ca5565b61020b610206366004611a44565b610d70565b604080516001600160a01b039093168352602083019190915201610105565b6003818154811061023a57600080fd5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b60606102686112e2565b6102706112e2565b84156102d8576102a1886000015189602001518a604001518b606001518c608001518d60a001518e60c00151610b5a565b91506102d161013c89600001518a602001518b604001518c606001518d608001518e60a001518f60c00151610b5a565b9050610337565b610305886000015189602001518a604001518b606001518c608001518d60a001518e60c001518e8e610724565b9150610334886000015189602001518a604001518b606001518c608001518d60a001518e60c001518e8e6109a3565b90505b81516020808401516040808601516060870151608088015160a089015160c08a015160e08b01516101008c0151965160009a6103779a9099989101611c39565b60408051808303601f19018152908290526101208501516101408601516101608701516101808801516101a08901516101c08a01516101e08b01516102008c01519799506103ca988a9890602001611c39565b60408051808303601f19018152908290526102208501519092506103f391839190602001611b21565b60408051808303601f190181528282528451602080870151938701516060880151608089015160a08a015160c08b015160e08c01516101008d0151989b5060009a61044d9a98999697959694959394929391929101611c39565b60408051808303601f19018152908290526101208501516101408601516101608701516101808801516101a08901516101c08a015195975061049496889690602001611ba7565b60408051808303601f19018152908290526101e08501516102008601516102208701519294506104c993859390602001611b50565b604051602081830303815290604052905060006105186104e888610fd5565b6104f18561110f565b8460405160200161050493929190611e23565b60405160208183030381529060405261110f565b90508060405160200161052b9190611dde565b6040516020818303038152906040529550505050505095945050505050565b6105526112e2565b61055a6112e2565b6040518060600160405280602381526020016121e1602391398152602083810151818301526040805160608101909152602980825290916123c79083013960408083019190915260608085015181840152815190810190915260268082526123526020830139608082015260a080840151908201526040805160608101909152602b808252612488602083013960c082015260e08084015190820152604080516060810190915260298082526124b3602083013961010082015261012080840151908201526040805160608101909152602d80825261218d602083013961014082015261016080840151908201526040805160608101909152602880825261232a60208301396101808201526101a092830151928101929092525060408051808201909152600481526322207d5d60e01b60208201526101c082015290565b6001818154811061023a57600080fd5b6002818154811061023a57600080fd5b6000546001600160a01b031633146107185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107226000611285565b565b61072c6112e2565b6107346112e2565b60405180610120016040528060fe815260200161220460fe9139815260208082018c90526040805160608101909152602780825290916123789083013960408083019190915260608083018c9052815190810190915260278082526124dc6020830139608082015260a08101899052604080516060810190915260278082526121ba602083013960c082015260e081018890526040805160608101909152602880825261252b602083013961010082015261012081018790526040805160608101909152602880825261239f602083013961014082015261016081018690526040805160608101909152602880825261246060208301396101808201526101a081018590526040805160608101909152602880825261250360208301396101c082015260408051808201909152600c81527f2d2d2d2d2d2d2d2d2d2d2d2d0000000000000000000000000000000000000000602082015281600f602002018190525060405180606001604052806028815260200161230260289139610200820152826108d06108cb670de0b6b3a764000087612090565b610fd5565b6040516020016108e1929190611d7a565b60408051601f198184030181529190528160115b60200201529a9950505050505050505050565b6000546001600160a01b031633146109625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070f565b825161097590600190602086019061130a565b50815161098990600290602085019061130a565b50805161099d90600390602084019061130a565b50505050565b6109ab6112e2565b6109b36112e2565b6040518060600160405280602381526020016121e160239139815260208082018c90526040805160608101909152602980825290916123c79083013960408083019190915260608083018c9052815190810190915260268082526123526020830139608082015260a081018990526040805160608101909152602b808252612488602083013960c082015260e08101889052604080516060810190915260298082526124b3602083013961010082015261012081018790526040805160608101909152602d80825261218d602083013961014082015261016081018690526040805160608101909152602880825261232a60208301396101808201526101a081018590526040805160608101909152603080825261243060208301396101c0820152604051610ae6908490602001611cfa565b60408051808303601f190181529190526101e0820152610b116108cb670de0b6b3a764000086612090565b604051602001610b219190611d4c565b60408051808303601f1901815291815261020083019190915280518082019091526003815262207d5d60e81b60208201528160116108f5565b610b626112e2565b610b6a6112e2565b60405180610120016040528060fe815260200161220460fe9139815260208082018a90526040805160608101909152602780825290916123789083013960408083019190915260608083018a9052815190810190915260278082526124dc6020830139608082015260a08101879052604080516060810190915260278082526121ba602083013960c082015260e081018690526040805160608101909152602880825261252b602083013961010082015261012081018590526040805160608101909152602880825261239f602083013961014082015261016081018490526040805160608101909152602880825261246060208301396101808201526101a08101929092525060408051808201909152600d81526c1e17ba32bc3a1f1e17b9bb339f60991b60208201526101c08201529695505050505050565b6000546001600160a01b03163314610cff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070f565b6001600160a01b038116610d645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161070f565b610d6d81611285565b50565b604051630684d07760e41b815260048101839052600090819033908290829063684d07709060240160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611a2c565b905080610df5575062c924b25b6000610e0182436120c3565b60608701516040516376a9506760e11b815260ff90911660048201529091506000906001600160a01b0385169063ed52a0ce9060240160206040518083038186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e879190611623565b9050811580610e94575082155b15610ea857945060009350610fce92505050565b600060028860c0015160ff1681548110610ed257634e487b7160e01b600052603260045260246000fd5b6000918252602080832090820401548a516001805460ff601f9095166101000a909304841695509216908110610f1857634e487b7160e01b600052603260045260246000fd5b60009182526020808320908204015460808c01516003805460ff601f9095166101000a909304841695509216908110610f6157634e487b7160e01b600052603260045260246000fd5b60009182526020808320908204015460ff601f9092166101000a900416915061012c84670de0b6b3a764000084610f988a886120a4565b610fa291906120a4565b610fac91906120a4565b610fb691906120a4565b610fc09190612090565b949950939750505050505050505b9250929050565b606081610ff95750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611023578061100d81612106565b915061101c9050600a83612090565b9150610ffd565b60008167ffffffffffffffff81111561104c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611076576020820181803683370190505b5090505b84156111075761108b6001836120c3565b9150611098600a86612121565b6110a3906030612078565b60f81b8183815181106110c657634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611100600a86612090565b945061107a565b949350505050565b606081516000141561112f57505060408051602081019091526000815290565b60006040518060600160405280604081526020016123f0604091399050600060038451600261115e9190612078565b6111689190612090565b6111739060046120a4565b90506000611182826020612078565b67ffffffffffffffff8111156111a857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156111d2576020820181803683370190505b509050818152600183018586518101602084015b818310156112405760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016111e6565b60038951066001811461125a576002811461126b57611277565b613d3d60f01b600119830152611277565b603d60f81b6000198301525b509398975050505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040518061024001604052806012905b60608152602001906001900390816112f25790505090565b82805482825590600052602060002090601f016020900481019282156113a05791602002820160005b8382111561137157835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302611333565b801561139e5782816101000a81549060ff0219169055600101602081600001049283019260010302611371565b505b506113ac9291506113b0565b5090565b5b808211156113ac57600081556001016113b1565b600082601f8301126113d5578081fd5b8135602067ffffffffffffffff8211156113f1576113f1612161565b8160051b611400828201612047565b83815282810190868401838801850189101561141a578687fd5b8693505b858410156114435761142f816114cf565b83526001939093019291840191840161141e565b50979650505050505050565b8035801515811461145f57600080fd5b919050565b600082601f830112611474578081fd5b813567ffffffffffffffff81111561148e5761148e612161565b6114a1601f8201601f1916602001612047565b8181528460208386010111156114b5578283fd5b816020850160208301379081016020019190915292915050565b803560ff8116811461145f57600080fd5b6000602082840312156114f1578081fd5b81356114fc81612177565b9392505050565b60006020808385031215611515578182fd5b823567ffffffffffffffff8082111561152c578384fd5b818501915085601f83011261153f578384fd5b611547611ffa565b80838861024086011115611559578687fd5b865b601281101561159157813585811115611572578889fd5b61157e8b828901611464565b855250928601929086019060010161155b565b509098975050505050505050565b6000806000606084860312156115b3578182fd5b833567ffffffffffffffff808211156115ca578384fd5b6115d6878388016113c5565b945060208601359150808211156115eb578384fd5b6115f7878388016113c5565b9350604086013591508082111561160c578283fd5b50611619868287016113c5565b9150509250925092565b600060208284031215611634578081fd5b81516114fc81612177565b600080600080600080600060e0888a031215611659578283fd5b873567ffffffffffffffff80821115611670578485fd5b61167c8b838c01611464565b985060208a0135915080821115611691578485fd5b61169d8b838c01611464565b975060408a01359150808211156116b2578485fd5b6116be8b838c01611464565b965060608a01359150808211156116d3578485fd5b6116df8b838c01611464565b955060808a01359150808211156116f4578485fd5b6117008b838c01611464565b945060a08a0135915080821115611715578384fd5b6117218b838c01611464565b935060c08a0135915080821115611736578283fd5b506117438a828b01611464565b91505092959891949750929550565b60008060008060008060008060006101208a8c031215611770578182fd5b893567ffffffffffffffff80821115611787578384fd5b6117938d838e01611464565b9a5060208c01359150808211156117a8578384fd5b6117b48d838e01611464565b995060408c01359150808211156117c9578384fd5b6117d58d838e01611464565b985060608c01359150808211156117ea578384fd5b6117f68d838e01611464565b975060808c013591508082111561180b578384fd5b6118178d838e01611464565b965060a08c013591508082111561182c578384fd5b6118388d838e01611464565b955060c08c013591508082111561184d578384fd5b6118598d838e01611464565b945060e08c013593506101008c0135915080821115611876578283fd5b506118838c828d01611464565b9150509295985092959850929598565b600080600080600060a086880312156118aa578283fd5b853567ffffffffffffffff808211156118c1578485fd5b9087019060e0828a0312156118d4578485fd5b6118dc612024565b8235828111156118ea578687fd5b6118f68b828601611464565b82525060208301358281111561190a578687fd5b6119168b828601611464565b60208301525060408301358281111561192d578687fd5b6119398b828601611464565b604083015250606083013582811115611950578687fd5b61195c8b828601611464565b606083015250608083013582811115611973578687fd5b61197f8b828601611464565b60808301525060a083013582811115611996578687fd5b6119a28b828601611464565b60a08301525060c0830135828111156119b9578687fd5b6119c58b828601611464565b60c08301525096506020880135955060408801359150808211156119e7578485fd5b506119f488828901611464565b935050611a036060870161144f565b949793965091946080013592915050565b600060208284031215611a25578081fd5b5035919050565b600060208284031215611a3d578081fd5b5051919050565b600080828403610100811215611a58578283fd5b8335925060e0601f1982011215611a6d578182fd5b50611a76612024565b611a82602085016114cf565b8152611a90604085016114cf565b6020820152611aa1606085016114cf565b6040820152611ab2608085016114cf565b6060820152611ac360a085016114cf565b6080820152611ad460c085016114cf565b60a0820152611ae560e085016114cf565b60c0820152809150509250929050565b60008151808452611b0d8160208601602086016120da565b601f01601f19169290920160200192915050565b60008351611b338184602088016120da565b835190830190611b478183602088016120da565b01949350505050565b60008551611b62818460208a016120da565b855190830190611b76818360208a016120da565b8551910190611b898183602089016120da565b8451910190611b9c8183602088016120da565b019695505050505050565b600088516020611bba8285838e016120da565b895191840191611bcd8184848e016120da565b8951920191611bdf8184848d016120da565b8851920191611bf18184848c016120da565b8751920191611c038184848b016120da565b8651920191611c158184848a016120da565b8551920191611c2781848489016120da565b919091019a9950505050505050505050565b60008a51611c4b818460208f016120da565b8a51611c5d8183860160208f016120da565b8a519184010190611c72818360208e016120da565b8951611c848183850160208e016120da565b8951929091010190611c9a818360208c016120da565b8751611cac8183850160208c016120da565b8751929091010190611cc2818360208a016120da565b8551611cd48183850160208a016120da565b8551929091010190611cea8183602088016120da565b019b9a5050505050505050505050565b61088960f21b81528151600090611d188160028501602087016120da565b7f222c202276616c7565223a2000000000000000000000000000000000000000006002939091019283015250600e01919050565b6000601160f91b8083528351611d698160018601602088016120da565b600193019283015250600201919050565b600960fa1b815260008351611d968160018501602088016120da565b6101d160f51b6001918401918201528351611db88160038401602088016120da565b6c1e17ba32bc3a1f1e17b9bb339f60991b60039290910191820152601001949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611e1681601d8501602087016120da565b91909101601d0192915050565b7f7b226e616d65223a2022536574746c656d656e74202300000000000000000000815260008451611e5b8160168501602089016120da565b7f222c20226465736372697074696f6e223a2022536574746c656d656e747320616016918401918201527f72652061207475726e20626173656420636976696c69736174696f6e2073696d60368201527f756c61746f722073746f72656420656e746972656c79206f6e20636861696e2c60568201527f20676f20666f72746820616e6420636f6e717565722e222c2022696d6167652260768201527f3a2022646174613a696d6167652f7376672b786d6c3b6261736536342c00000060968201528451611f308160b38401602089016120da565b601160f91b60b392909101918201527f2c2261747472696275746573223a00000000000000000000000000000000000060b48201528351611f788160c28401602088016120da565b611f8e60c282840101607d60f81b815260010190565b979650505050505050565b6020808252600090610260830183820185845b6012811015611fdb57601f19878503018352611fc9848351611af5565b93509184019190840190600101611fac565b50919695505050505050565b6020815260006114fc6020830184611af5565b604051610240810167ffffffffffffffff8111828210171561201e5761201e612161565b60405290565b60405160e0810167ffffffffffffffff8111828210171561201e5761201e612161565b604051601f8201601f1916810167ffffffffffffffff8111828210171561207057612070612161565b604052919050565b6000821982111561208b5761208b612135565b500190565b60008261209f5761209f61214b565b500490565b60008160001904831182151516156120be576120be612135565b500290565b6000828210156120d5576120d5612135565b500390565b60005b838110156120f55781810151838201526020016120dd565b8381111561099d5750506000910152565b600060001982141561211a5761211a612135565b5060010190565b6000826121305761213061214b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d6d57600080fdfe22207d2c207b202274726169745f74797065223a2022476f7665726e6d656e74222c202276616c7565223a20223c2f746578743e3c7465787420783d2231302220793d2238302220636c6173733d22747874223e5b7b202274726169745f74797065223a202253697a65222c202276616c7565223a20223c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e747874207b2066696c6c3a20626c61636b3b20666f6e742d66616d696c793a206d6f6e6f73706163653b20666f6e742d73697a653a20313270783b7d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22776869746522202f3e3c7465787420783d2231302220793d2232302220636c6173733d22747874223e3c2f746578743e3c7465787420783d2231302220793d223138302220636c6173733d22747874223e22207d2c207b202274726169745f74797065223a20225265616c6d222c202276616c7565223a202222207d2c207b202274726169745f74797065223a2022416765222c202276616c7565223a20223c2f746578743e3c7465787420783d2231302220793d2234302220636c6173733d22747874223e3c2f746578743e3c7465787420783d2231302220793d223132302220636c6173733d22747874223e22207d2c207b202274726169745f74797065223a2022537069726974222c202276616c7565223a20224142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f22207d2c207b2022646973706c61795f74797065223a20226e756d626572222c20202274726169745f74797065223a203c2f746578743e3c7465787420783d2231302220793d223134302220636c6173733d22747874223e22207d2c207b202274726169745f74797065223a20225265736f75726365222c202276616c7565223a202222207d2c207b202274726169745f74797065223a20224d6f72616c65222c202276616c7565223a20223c2f746578743e3c7465787420783d2231302220793d2236302220636c6173733d22747874223e3c2f746578743e3c7465787420783d2231302220793d223136302220636c6173733d22747874223e3c2f746578743e3c7465787420783d2231302220793d223130302220636c6173733d22747874223ea264697066735822122058cceae28737e7c93ffed04439603c0ad4ed072b93fad91d79589de5b6a2237c64736f6c63430008040033