0x60806040526c0c9f2c9cd04674edea400000006000556b409f9cbc7c4a04c22000000060019081556006805460ff191690911790553480156200004157600080fd5b50604051620021f7380380620021f7833981810160405260208110156200006757600080fd5b505160068054610100600160a81b03191633610100810291909117909155600080548282526004602090815260408084208390558051928352517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620000d5620000e7565b620000e081620002da565b50620003c5565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013a57600080fd5b505afa1580156200014f573d6000803e3d6000fd5b505050506040513d60208110156200016657600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620001b757600080fd5b505afa158015620001cc573d6000803e3d6000fd5b505050506040513d6020811015620001e357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200023657600080fd5b505af11580156200024b573d6000803e3d6000fd5b505050506040513d60208110156200026257600080fd5b5051600b80546001600160a01b03199081166001600160a01b03938416178255600a805490911693831693909317835533600090815260026020526040808220805460ff1990811660019081179092559354851683528183208054851682179055945490931681529190912080549091169091179055565b600c80546001600160a01b0319166001600160a01b03838116919091179182905560408051634fb2e45d60e01b815230600482015290519290911691634fb2e45d9160248082019260009290919082900301818387803b1580156200033e57600080fd5b505af115801562000353573d6000803e3d6000fd5b5050600c54600b5460408051635116a41960e11b81526001600160a01b039283166004820152905191909216935063a22d48329250602480830192600092919082900301818387803b158015620003a957600080fd5b505af1158015620003be573d6000803e3d6000fd5b5050505050565b611e2280620003d56000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e14610559578063e7a324dc14610587578063f1127ed81461058f578063f8b45b05146105e1576101a9565b8063b4b5ea571461049b578063c3cda520146104c1578063d505accf14610508576101a9565b80637ecebe00116100d35780637ecebe001461043957806395d89b411461045f578063975e8c3b14610467578063a9059cbb1461046f576101a9565b806370a08231146103c157806372b7685d146103e7578063782d6fe11461040d576101a9565b806323b872dd1161016657806349bd5a5e1161014057806349bd5a5e1461032e578063587cde1e146103365780635c19a95c1461035c5780636fcfff4514610382576101a9565b806323b872dd146102d257806330adf81f14610308578063313ce56714610310576101a9565b806306fdde03146101ae578063095ea7b31461022b578063141fbbcc1461026b5780631694505e1461028c57806318160ddd146102b057806320606b70146102ca575b600080fd5b6101b66105e9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b03813516906020013561060d565b604080519115158252519081900360200190f35b61028a6004803603602081101561028157600080fd5b503515156106b2565b005b61029461071d565b604080516001600160a01b039092168252519081900360200190f35b6102b861072c565b60408051918252519081900360200190f35b6102b8610732565b610257600480360360608110156102e857600080fd5b506001600160a01b03813581169160208101359091169060400135610756565b6102b8610871565b610318610895565b6040805160ff9092168252519081900360200190f35b61029461089a565b6102946004803603602081101561034c57600080fd5b50356001600160a01b03166108a9565b61028a6004803603602081101561037257600080fd5b50356001600160a01b03166108c4565b6103a86004803603602081101561039857600080fd5b50356001600160a01b03166108d1565b6040805163ffffffff9092168252519081900360200190f35b6102b8600480360360208110156103d757600080fd5b50356001600160a01b03166108e9565b610257600480360360208110156103fd57600080fd5b50356001600160a01b0316610904565b6102b86004803603604081101561042357600080fd5b506001600160a01b038135169060200135610919565b6102b86004803603602081101561044f57600080fd5b50356001600160a01b0316610b21565b6101b6610b33565b610257610b57565b6102576004803603604081101561048557600080fd5b506001600160a01b038135169060200135610b60565b6102b8600480360360208110156104b157600080fd5b50356001600160a01b0316610b9c565b61028a600480360360c08110156104d757600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610c00565b61028a600480360360e081101561051e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea5565b6102b86004803603604081101561056f57600080fd5b506001600160a01b0381358116916020013516611270565b6102b861129b565b6105c1600480360360408110156105a557600080fd5b5080356001600160a01b0316906020013563ffffffff166112bf565b6040805163ffffffff909316835260208301919091528051918290030190f35b6102b86112ec565b604051806040016040528060088152602001675261726520496e7560c01b81525081565b6000806000198314156106235750600019610648565b61064583604051806060016040528060268152602001611c24602691396112f2565b90505b3360008181526003602090815260408083206001600160a01b03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a360019150505b92915050565b60065461010090046001600160a01b0316331461070a576040805162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015290519081900360640190fd5b6006805460ff1916911515919091179055565b600a546001600160a01b031681565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6001600160a01b0383166000908152600360209081526040808320338085529083528184205482516060810190935260268084529193909285926107a49288929190611c24908301396112f2565b9050866001600160a01b0316836001600160a01b0316141580156107ca57506000198214155b156108595760006107f483836040518060600160405280603e8152602001611d3c603e913961138c565b6001600160a01b03808a166000818152600360209081526040808320948a168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b6108648787836113e6565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b600b546001600160a01b031681565b6005602052600090815260409020546001600160a01b031681565b6108ce338261171e565b50565b60086020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526004602052604090205490565b60026020526000908152604090205460ff1681565b60004382106109595760405162461bcd60e51b8152600401808060200182810382526028815260200180611bfc6028913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff16806109875760009150506106ac565b6001600160a01b038416600090815260076020908152604080832063ffffffff6000198601811685529252909120541683106109f6576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff168352929052206001015490506106ac565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015610a315760009150506106ac565b600060001982015b8163ffffffff168163ffffffff161115610aea57600282820363ffffffff16048103610a63611b26565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610ac5576020015194506106ac9350505050565b805163ffffffff16871115610adc57819350610ae3565b6001820392505b5050610a39565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b60096020526000908152604090205481565b60405180604001604052806008815260200167726172655f696e7560c01b81525081565b60065460ff1681565b600080610b8583604051806060016040528060278152602001611c7b602791396112f2565b9050610b923385836113e6565b5060019392505050565b6001600160a01b03811660009081526008602052604081205463ffffffff1680610bc7576000610bf9565b6001600160a01b038316600090815260076020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b6040805180820190915260088152675261726520496e7560c01b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fe44d467a825e4a2ff6fc523ba96811771826a28afdd0f68aabf18fcc5dac695f610c6c61179e565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015610d9f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610df15760405162461bcd60e51b8152600401808060200182810382526027815260200180611bb06027913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090208054600181019091558914610e4f5760405162461bcd60e51b8152600401808060200182810382526023815260200180611dca6023913960400191505060405180910390fd5b87421115610e8e5760405162461bcd60e51b8152600401808060200182810382526027815260200180611da36027913960400191505060405180910390fd5b610e98818b61171e565b505050505b505050505050565b6000600019861415610eba5750600019610edf565b610edc86604051806060016040528060258152602001611bd7602591396112f2565b90505b6040805180820190915260088152675261726520496e7560c01b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fe44d467a825e4a2ff6fc523ba96811771826a28afdd0f68aabf18fcc5dac695f610f4b61179e565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401206001600160a01b038d8116600081815260098752848120805460018082019092557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960c089015260e0880193909352928f1661010087015261012086018e90526101408601919091526101608086018d9052845180870390910181526101808601855280519087012061190160f01b6101a08701526101a286018490526101c2808701829052855180880390910181526101e2870180875281519189019190912090839052610202870180875281905260ff8d1661022288015261024287018c905261026287018b90529451939750959394909391926102828083019392601f198301929081900390910190855afa1580156110a7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661110f576040805162461bcd60e51b815260206004820181905260248201527f45524332303a3a7065726d69743a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b8b6001600160a01b0316816001600160a01b031614611175576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a3a7065726d69743a20756e617574686f72697a65640000000000604482015290519081900360640190fd5b884211156111ca576040805162461bcd60e51b815260206004820181905260248201527f45524332303a3a7065726d69743a207369676e61747572652065787069726564604482015290519081900360640190fd5b84600360008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020819055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040518082815260200191505060405180910390a3505050505050505050505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b60015481565b600081600160801b84106113845760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611349578181015183820152602001611331565b50505050905090810190601f1680156113765780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b600081848411156113de5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611349578181015183820152602001611331565b505050900390565b60065460ff16156114ca57600c5460408051630e09073f60e41b81526001600160a01b038681166004830152858116602483015232604483018190529251600094919091169163e09073f091606480830192602092919082900301818887803b15801561145257600080fd5b505af192505050801561147757506040513d602081101561147257600080fd5b505160015b61148057600080fd5b9150816114c7576040805162461bcd60e51b815260206004820152601060248201526f13515588109bdd0811195d1958dd195960821b604482015290519081900360640190fd5b50505b6001600160a01b03831661150f5760405162461bcd60e51b815260040180806020018281038252603d815260200180611cff603d913960400191505060405180910390fd5b6001600160a01b0382166115545760405162461bcd60e51b815260040180806020018281038252603b815260200180611b75603b913960400191505060405180910390fd5b6001600160a01b03821660009081526002602052604090205460ff166115fb576001546115b660046000856001600160a01b03166001600160a01b031681526020019081526020016000205483604051806020016040528060008152506117a2565b11156115fb576040805162461bcd60e51b815260206004820152600f60248201526e151e08131a5b5a5d08115e18d95959608a1b604482015290519081900360640190fd5b61164360046000856001600160a01b03166001600160a01b031681526020019081526020016000205482604051806060016040528060378152602001611b3e6037913961138c565b6001600160a01b03808516600090815260046020908152604080832094909455918516815282902054825160608101909352603180845261169093919285929190611c4a908301396117a2565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36001600160a01b0380841660009081526005602052604080822054858416835291205461171992918216911683611800565b505050565b6001600160a01b03808316600081815260056020818152604080842080546004845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611798828483611800565b50505050565b4690565b600083830182858210156117f75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611349578181015183820152602001611331565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156118225750600081115b15611719576001600160a01b038316156118cd576001600160a01b03831660009081526008602052604081205463ffffffff169081611862576000611894565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b905060006118bb8285604051806060016040528060298152602001611d7a6029913961138c565b90506118c98684848461196b565b5050505b6001600160a01b03821615611719576001600160a01b03821660009081526008602052604081205463ffffffff16908161190857600061193a565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b905060006119618285604051806060016040528060288152602001611ca2602891396117a2565b9050610e9d858484845b600061198f43604051806060016040528060358152602001611cca60359139611ad0565b905060008463ffffffff161180156119d857506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611a15576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055611a86565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008164010000000084106113845760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611349578181015183820152602001611331565b60408051808201909152600080825260208201529056fe45524332303a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737345524332303a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a3a7065726d69743a20616d6f756e742065786365656473203936206269747345524332303a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656445524332303a3a617070726f76653a20616d6f756e742065786365656473203936206269747345524332303a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777345524332303a3a7472616e736665723a20616d6f756e742065786365656473203936206269747345524332303a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777345524332303a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636545524332303a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777345524332303a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365a264697066735822122022fe4275e954fc0f627c40597baa6389f5c985b9e351df84723a4f1a55d3567064736f6c634300060c003300000000000000000000000088bbe549bb4f06d5f38b7f368ec701839e9fb2bf