0x60806040526002805460ff1916905534801561001a57600080fd5b50611a6b8061002a6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391d1485411610097578063ca15c87311610066578063ca15c8731461038e578063d547741f146103ab578063e375b64e146103d7578063ec87621c14610468576100f5565b806391d1485414610318578063a217fddf14610358578063b017a30f14610360578063c4d66de814610368576100f5565b806336568abe116100d357806336568abe1461021c578063609c92b8146102485780638274664f146102505780639010d07c146102d9576100f5565b8063150b7a02146100fa578063248a9ca3146101bf5780632f2ff15d146101ee575b600080fd5b61018a6004803603608081101561011057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561014b57600080fd5b82018360208201111561015d57600080fd5b8035906020019184600183028401116401000000008311171561017f57600080fd5b509092509050610470565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6101dc600480360360208110156101d557600080fd5b503561049a565b60408051918252519081900360200190f35b61021a6004803603604081101561020457600080fd5b50803590602001356001600160a01b03166104b2565b005b61021a6004803603604081101561023257600080fd5b50803590602001356001600160a01b031661051e565b6101dc61057f565b61021a6004803603606081101561026657600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561029a57600080fd5b8201836020820111156102ac57600080fd5b803590602001918460018302840111640100000000831117156102ce57600080fd5b5090925090506105b4565b6102fc600480360360408110156102ef57600080fd5b50803590602001356108f9565b604080516001600160a01b039092168252519081900360200190f35b6103446004803603604081101561032e57600080fd5b50803590602001356001600160a01b0316610920565b604080519115158252519081900360200190f35b6101dc61093e565b6101dc610943565b61021a6004803603602081101561037e57600080fd5b50356001600160a01b0316610967565b6101dc600480360360208110156103a457600080fd5b5035610a72565b61021a600480360360408110156103c157600080fd5b50803590602001356001600160a01b0316610a89565b61021a600480360360808110156103ed57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b509092509050610ae2565b6101dc61114b565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6000818152602081905260409020600201545b919050565b6000828152602081905260409020600201546104d5906104d0611180565b610920565b6105105760405162461bcd60e51b815260040180806020018281038252602f815260200180611965602f913960400191505060405180910390fd5b61051a8282611185565b5050565b610526611180565b6001600160a01b0316816001600160a01b0316146105755760405162461bcd60e51b815260040180806020018281038252602f815260200180611a07602f913960400191505060405180910390fd5b61051a82826111f4565b604080517f45524337323100000000000000000000000000000000000000000000000000008152905190819003600601902081565b604080517f4d414e414745525f524f4c4500000000000000000000000000000000000000008152905190819003600c0190206105f2816104d0611180565b6001906106925760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106835780601f1061065857610100808354040283529160200191610683565b820191906000526020600020905b81548152906001019060200180831161066657829003601f168201915b50509250505060405180910390fd5b5060606106dc6106d785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126392505050565b611288565b905060606106fd826001815181106106f057fe5b6020026020010151611288565b9050600061071e8260018151811061071157fe5b6020026020010151611370565b9050806001600160a01b0316886001600160a01b03161461073e57600080fd5b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60001b6107728360008151811061071157fe5b146107ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806119c46022913960400191505060405180910390fd5b60006001600160a01b03166107c98360028151811061071157fe5b6001600160a01b03161461080e5760405162461bcd60e51b81526004018080602001828103825260218152602001806119e66021913960400191505060405180910390fd5b60006108208360038151811061071157fe5b604080517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038581166024830152604482018490529151929350908a16916342842e0e9160648082019260009290919082900301818387803b15801561089457600080fd5b505af11580156108a8573d6000803e3d6000fd5b50506040805184815290516001600160a01b03808d169450861692507fe9ae525a9512e4ebce82a4301c43bc0915b47778d50e13d49319952b6881f7a99181900360200190a3505050505050505050565b6000828152602081905260408120610917908363ffffffff6113be16565b90505b92915050565b6000828152602081905260408120610917908363ffffffff6113ca16565b600081565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81565b60025460ff16156109bf576040805162461bcd60e51b815260206004820152600e60248201527f616c726561647920696e69746564000000000000000000000000000000000000604482015290519081900360640190fd5b6109fd6040518060400160405280600f81526020017f45524337323150726564696361746500000000000000000000000000000000008152506113df565b610a08600082610510565b604080517f4d414e414745525f524f4c4500000000000000000000000000000000000000008152905190819003600c019020610a449082610510565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600081815260208190526040812061091a9061149b565b600082815260208190526040902060020154610aa7906104d0611180565b6105755760405162461bcd60e51b81526004018080602001828103825260308152602001806119946030913960400191505060405180910390fd5b604080517f4d414e414745525f524f4c4500000000000000000000000000000000000000008152905190819003600c019020610b20816104d0611180565b600190610b865760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106835780601f1061065857610100808354040283529160200191610683565b506020821015610bdd576040805162461bcd60e51b815260206004820152601360248201527f496e76616c69642064617461206c656e67746800000000000000000000000000604482015290519081900360640190fd5b6000606084846040811015610bf157600080fd5b81359190810190604081016020820135640100000000811115610c1357600080fd5b820183602082011115610c2557600080fd5b80359060200191846001830284011164010000000083111715610c4757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287519b9d50969b508b9a919950899850606001965094890194935083925085915084905b83811015610cca578181015183820152602001610cb2565b50505050905090810190601f168015610cf75780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206040516020018080602001828103825260028152602001807f4e41000000000000000000000000000000000000000000000000000000000000815250602001915050604051602081830303815290604052805190602001201415610dfe57604080517f42842e0e0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152306024830152604482018590529151918816916342842e0e9160648082019260009290919082900301818387803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b505050506110ec565b6060866001600160a01b031663c87b56dd846040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610e8157600080fd5b8101908080516040519392919084640100000000821115610ea157600080fd5b908301906020820185811115610eb657600080fd5b8251640100000000811182820188101715610ed057600080fd5b82525081516020918201929091019080838360005b83811015610efd578181015183820152602001610ee5565b50505050905090810190601f168015610f2a5780820380516001836020036101000a031916815260200191505b506040525050509050806040516020018082805190602001908083835b60208310610f665780518252601f199092019160209182019101610f47565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120826040516020018082805190602001908083835b60208310610fd45780518252601f199092019160209182019101610fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014611061576040805162461bcd60e51b815260206004820152600c60248201527f555249206d69736d617463680000000000000000000000000000000000000000604482015290519081900360640190fd5b604080517f42842e0e0000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152306024830152604482018690529151918916916342842e0e9160648082019260009290919082900301818387803b1580156110d257600080fd5b505af11580156110e6573d6000803e3d6000fd5b50505050505b856001600160a01b0316876001600160a01b0316896001600160a01b03167f8357472e13612a8c3d6f3e9d71fbba8a78ab77dbdcc7fcf3b7b645585f0bbbfc856040518082815260200191505060405180910390a45050505050505050565b604080517f4d414e414745525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b335b90565b60008281526020819052604090206111a3908263ffffffff6114a616565b1561051a576111b0611180565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020611212908263ffffffff6114bb16565b1561051a5761121f611180565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b61126b611890565b506040805180820190915281518152602082810190820152919050565b6060611293826114d0565b61129c57600080fd5b60006112a78361150a565b905060608167ffffffffffffffff811180156112c257600080fd5b506040519080825280602002602001820160405280156112fc57816020015b6112e9611890565b8152602001906001900390816112e15790505b509050600061130e8560200151611566565b60208601510190506000805b848110156113655761132b83611605565b915060405180604001604052808381526020018481525084828151811061134e57fe5b60209081029190910101529181019160010161131a565b509195945050505050565b80516000901580159061138557508151602110155b61138e57600080fd5b60008061139a846116da565b8151919350915060208210156113b65760208290036101000a90045b949350505050565b60006109178383611700565b6000610917836001600160a01b038416611764565b806040516020018082805190602001908083835b602083106114125780518252601f1990920191602091820191016113f3565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e5300000000000091909301908152604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa018152601a9092019052805161051a95506001945092019190506118aa565b600061091a8261177c565b6000610917836001600160a01b038416611780565b6000610917836001600160a01b0384166117ca565b80516000906114e1575060006104ad565b6020820151805160001a9060c0821015611500576000925050506104ad565b5060019392505050565b805160009061151b575060006104ad565b6000809050600061152f8460200151611566565b602085015185519181019250015b8082101561155d5761154e82611605565b6001909301929091019061153d565b50909392505050565b8051600090811a60808110156115805760009150506104ad565b60b881108061159b575060c0811080159061159b575060f881105b156115aa5760019150506104ad565b60c08110156115dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506104ad565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506104ad565b80516000908190811a608081101561162057600191506116d3565b60b8811015611653577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810191506116d3565b60c08110156116805760b78103600185019450806020036101000a855104600182018101935050506116d3565b60f88110156116b3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41810191506116d3565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b60008060006116ec8460200151611566565b602085015194519481019594039392505050565b815460009082106117425760405162461bcd60e51b81526004018080602001828103825260228152602001806119436022913960400191505060405180910390fd5b82600001828154811061175157fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b600061178c8383611764565b6117c25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561091a565b50600061091a565b6000818152600183016020526040812054801561188657835460001980830191908101906000908790839081106117fd57fe5b906000526020600020015490508087600001848154811061181a57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061184a57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061091a565b600091505061091a565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118eb57805160ff1916838001178555611918565b82800160010185558215611918579182015b828111156119185782518255916020019190600101906118fd565b50611924929150611928565b5090565b61118291905b80821115611924576000815560010161192e56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732315072656469636174653a20494e56414c49445f5349474e41545552454552433732315072656469636174653a20494e56414c49445f5245434549564552416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220e05acf855c0ca1c0295fc383076dfaf360d7cd46473de46397e0848523daa69d64736f6c63430006060033