0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80638a0b8dd81161010f578063cd48b7a0116100a2578063dfb1802311610071578063dfb18023146106f2578063e85a8934146106fa578063f887ea401461072d578063fff6cae914610735576101e5565b8063cd48b7a014610641578063d09f1dbb1461067c578063d21220a7146106af578063dd62ed3e146106b7576101e5565b8063ba9a7a56116100de578063ba9a7a56146105b9578063bc25cf77146105c1578063c0c53b8b146105f4578063c45a015514610639576101e5565b80638a0b8dd81461053d57806395d89b4114610545578063a9059cbb1461054d578063b4899fc714610586576101e5565b8063439de419116101875780635b383411116101565780635b383411146104835780636a6278421461048b57806370a08231146104be57806389afcb44146104f1576101e5565b8063439de4191461039f57806345bb14fe146103d85780635909c0d5146104735780635a3d54931461047b576101e5565b80630dfe1681116101c35780630dfe1681146102f357806318160ddd1461032457806323b872dd1461033e578063313ce56714610381576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102a6575b600080fd5b6101f261073d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f610776565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102df600480360360408110156102bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cb565b604080519115158252519081900360200190f35b6102fb6107e2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61032c6107fe565b60408051918252519081900360200190f35b6102df6004803603606081101561035457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610804565b6103896108e3565b6040805160ff9092168252519081900360200190f35b61032c600480360360408110156103b557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e8565b610471600480360360a08110156103ee57600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561043257600080fd5b82018360208201111561044457600080fd5b8035906020019184600183028401116401000000008311171561046657600080fd5b919350915035610a28565b005b61032c61139f565b61032c6113a5565b61032c6113ab565b61032c600480360360208110156104a157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113b1565b61032c600480360360208110156104d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611790565b6105246004803603602081101561050757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117bc565b6040805192835260208301919091528051918290030190f35b61032c611c0a565b6101f2611c8e565b6102df6004803603604081101561056357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611cc7565b61032c6004803603602081101561059c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cd4565b61032c611d8f565b610471600480360360208110156105d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d95565b6104716004803603606081101561060a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160409091013516611f8b565b6102fb6120b8565b6104716004803603604081101561065757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120d4565b6104716004803603602081101561069257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166121f8565b6102fb612313565b61032c600480360360408110156106cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661232f565b61047161234c565b61032c6004803603602081101561071057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612497565b6102fb6125cf565b6104716125eb565b6040518060400160405280600681526020017f45786361766f000000000000000000000000000000000000000000000000000081525081565b6006546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60006107d83384846127d1565b5060015b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60045490565b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146108ce5773ffffffffffffffffffffffffffffffffffffffff8416600090815260116020908152604080832033845290915290205461089c908363ffffffff61284016565b73ffffffffffffffffffffffffffffffffffffffff851660009081526011602090815260408083203384529091529020555b6108d98484846128b2565b5060019392505050565b601281565b600060125460011461095b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517ffaf69328000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff85166024830152604482018490525173ba214d175fd40271617ef368ce4a027847c439899163faf69328916064808301926020929190829003018186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d6020811015610a1a57600080fd5b505160016012559392505050565b601254600114610a9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b600060125560035473ffffffffffffffffffffffffffffffffffffffff163314610b2457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f45786361766f3a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b610b2c6131c3565b6000871180610b3b5750600086115b610b90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132266022913960400191505060405180910390fd5b600080610b9b610776565b5091509150816dffffffffffffffffffffffffffff1689108015610bce5750806dffffffffffffffffffffffffffff1688105b610c3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45786361766f3a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff908116604085018190526002548216606086015290881614801590610ca65750826060015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b610d1157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f45786361766f3a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b8815610d2657610d268360400151888b6129b2565b8715610d3b57610d3b8360600151888a6129b2565b8415610e1d578673ffffffffffffffffffffffffffffffffffffffff1663e2fdc6b0338b8b8a8a6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050505b60408084015181517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915173ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b505183526060830151604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015610f2f57600080fd5b505afa158015610f43573d6000803e3d6000fd5b505050506040513d6020811015610f5957600080fd5b5051602084015282516000906dffffffffffffffffffffffffffff84168b900310610f85576000610f9f565b89836dffffffffffffffffffffffffffff16038460000151035b9050600089836dffffffffffffffffffffffffffff1603856020015111610fc7576000610fe1565b89836dffffffffffffffffffffffffffff16038560200151035b90506000821180610ff25750600081115b611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061326d6021913960400191505060405180910390fd5b61107d61105d836004890263ffffffff612bbf16565b86516110719061271063ffffffff612bbf16565b9063ffffffff61284016565b60808601526110af611098826004890263ffffffff612bbf16565b60208701516110719061271063ffffffff612bbf16565b60a08601526110eb6305f5e1006110df6dffffffffffffffffffffffffffff87811690871663ffffffff612bbf16565b9063ffffffff612bbf16565b60a086015160808701516111049163ffffffff612bbf16565b101561117157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f45786361766f3a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60105473ffffffffffffffffffffffffffffffffffffffff16156113185760105460015460009173ffffffffffffffffffffffffffffffffffffffff9182169116146111bf576008546111c3565b6007545b600654875160208901519293507c010000000000000000000000000000000000000000000000000000000090910463ffffffff169161120491908888612c45565b6006547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681146113115760105460015460009173ffffffffffffffffffffffffffffffffffffffff91821691161461126357600854611267565b6007545b600f5460065491925073ffffffffffffffffffffffffffffffffffffffff169063a0712d68907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16849003858403816112c057fe5b046040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050505b505061132c565b61132c856000015186602001518686612c45565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001601255505050505050505050565b60075490565b60085490565b60055490565b600060125460011461142457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601281905580611434610776565b50600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156114ae57600080fd5b505afa1580156114c2573d6000803e3d6000fd5b505050506040513d60208110156114d857600080fd5b5051600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b5051905060006115a1836dffffffffffffffffffffffffffff871663ffffffff61284016565b905060006115c5836dffffffffffffffffffffffffffff871663ffffffff61284016565b60045490915060006115e56115e0858563ffffffff612bbf16565b612f01565b905081611677576115fe816103e863ffffffff61284016565b985061160e60006103e880612f52565b60008911611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061328e6025913960400191505060405180910390fd5b6116728a8a8b612f52565b611737565b6116d16dffffffffffffffffffffffffffff891661169b868563ffffffff612bbf16565b816116a257fe5b046dffffffffffffffffffffffffffff89166116c4868663ffffffff612bbf16565b816116cb57fe5b04613050565b98506000891161172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061328e6025913960400191505060405180910390fd5b6117378a8a83612f52565b61174386868a8a612c45565b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050600160125550949695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c60205260409020545b919050565b60008060125460011461183057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601281905580611840610776565b50600154600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d60208110156118ec57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d602081101561198a57600080fd5b5051306000908152600c602052604090205460045491925090806119b4838663ffffffff612bbf16565b816119bb57fe5b049950806119cf838563ffffffff612bbf16565b816119d657fe5b04985060008a1180156119e95750600089115b611a3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132486025913960400191505060405180910390fd5b611a483083613068565b611a53868c8c6129b2565b611a5e858c8b6129b2565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8816916370a08231916024808301926020929190829003018186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8716916370a0823191602480820192602092909190829003018186803b158015611b6657600080fd5b505afa158015611b7a573d6000803e3d6000fd5b505050506040513d6020811015611b9057600080fd5b50519250611ba084848a8a612c45565b604080518b8152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001601281905550915091565b60008073ba214d175fd40271617ef368ce4a027847c4398963c18c483f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c5d57600080fd5b505af4158015611c71573d6000803e3d6000fd5b505050506040513d6020811015611c8757600080fd5b5051905090565b6040518060400160405280600681526020017f45584341564f000000000000000000000000000000000000000000000000000081525081565b60006107d83384846128b2565b604080517f012fdd2300000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff84166024830152915173ba214d175fd40271617ef368ce4a027847c439899163012fdd23916044808301926020929190829003018186803b158015611d5d57600080fd5b505af4158015611d71573d6000803e3d6000fd5b505050506040513d6020811015611d8757600080fd5b505192915050565b6103e881565b601254600114611e0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601255600154600254600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611ee29285928792611edd926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611ea557600080fd5b505afa158015611eb9573d6000803e3d6000fd5b505050506040513d6020811015611ecf57600080fd5b50519063ffffffff61284016565b6129b2565b600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f819284928792611edd926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b158015611ea557600080fd5b5050600160125550565b601254600114611ffc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517fa4559a290000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8087166024830152808616604483015284166064820152905173ba214d175fd40271617ef368ce4a027847c439899263a4559a299260848082019391829003018186803b15801561209657600080fd5b505af41580156120aa573d6000803e3d6000fd5b505060016012555050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60125460011461214557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f58abccf20000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff808616602483015284166044820152905173ba214d175fd40271617ef368ce4a027847c43989926358abccf29260648082019391829003018186803b1580156121d757600080fd5b505af41580156121eb573d6000803e3d6000fd5b5050600160125550505050565b60125460011461226957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f8f47e59d0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff84166024820152905173ba214d175fd40271617ef368ce4a027847c4398992638f47e59d9260448082019391829003018186803b1580156122f357600080fd5b505af4158015612307573d6000803e3d6000fd5b50506001601255505050565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b601160209081526000928352604080842090915290825290205481565b6012546001146123bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f68e2e3af00000000000000000000000000000000000000000000000000000000815260048101929092525133917f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145569173ba214d175fd40271617ef368ce4a027847c43989916368e2e3af916024808301926020929190829003018186803b15801561245357600080fd5b505af4158015612467573d6000803e3d6000fd5b505050506040513d602081101561247d57600080fd5b505160408051918252519081900360200190a26001601255565b600060125460011461250a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517fe571705a000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff841660248301525173ba214d175fd40271617ef368ce4a027847c439899163e571705a916044808301926020929190829003018186803b15801561259857600080fd5b505af41580156125ac573d6000803e3d6000fd5b505050506040513d60208110156125c257600080fd5b5051600160125592915050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b60125460011461265c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601255600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516127ca9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156126d357600080fd5b505afa1580156126e7573d6000803e3d6000fd5b505050506040513d60208110156126fd57600080fd5b5051600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b50516006546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612c45565b6001601255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260116020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156107dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080517f3c0a40eb00000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff80871660248401528516604483015260648201849052915173ba214d175fd40271617ef368ce4a027847c4398992633c0a40eb9260848082019391829003018186803b15801561294657600080fd5b505af415801561295a573d6000803e3d6000fd5b505060408051848152905173ffffffffffffffffffffffffffffffffffffffff8087169450871692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310612ab857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a7b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b1a576040519150601f19603f3d011682016040523d82523d6000602084013e612b1f565b606091505b5091509150818015612b4d575080511580612b4d5750808060200190516020811015612b4a57600080fd5b50515b612bb857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45786361766f3a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b6000811580612bda57505080820282828281612bd757fe5b04145b6107dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff8411801590612c7157506dffffffffffffffffffffffffffff8311155b612cdc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f45786361766f3a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60065463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612d2c57506dffffffffffffffffffffffffffff841615155b8015612d4757506dffffffffffffffffffffffffffff831615155b15612df7578063ffffffff16612d8a85612d608661315e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61318216565b600780547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612dca84612d608761315e565b600880547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600680547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b60006003821115612f44575080600160028204015b81811015612f3e57809150600281828581612f2d57fe5b040181612f3657fe5b049050612f16565b506117b7565b81156117b757506001919050565b604080517f05ef5b5d00000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff861660248301526044820185905260648201849052915173ba214d175fd40271617ef368ce4a027847c43989926305ef5b5d9260848082019391829003018186803b158015612fe557600080fd5b505af4158015612ff9573d6000803e3d6000fd5b505060408051858152905173ffffffffffffffffffffffffffffffffffffffff87169350600092507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b600081831061305f5781613061565b825b9392505050565b604080517f3f999ae000000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff8516602483015260448201849052915173ba214d175fd40271617ef368ce4a027847c4398992633f999ae09260648082019391829003018186803b1580156130f457600080fd5b505af4158015613108573d6000803e3d6000fd5b50506040805184815290516000935073ffffffffffffffffffffffffffffffffffffffff861692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816131bb57fe5b049392505050565b6040518060c001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe45786361766f3a20494e53554646494349454e545f4f55545055545f414d4f554e5445786361766f3a20494e53554646494349454e545f4c49515549444954595f4255524e454445786361766f3a20494e53554646494349454e545f494e5055545f414d4f554e5445786361766f3a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220cdb16651995f61856110913e5dd9ff609ed669b0cdbe359269061b1c0a99eabb64736f6c63430006060033
0x6080604052600160125534801561001557600080fd5b50600080546001600160a01b031916331790556132e8806100376000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638a0b8dd81161010f578063cd48b7a0116100a2578063dfb1802311610071578063dfb18023146106f2578063e85a8934146106fa578063f887ea401461072d578063fff6cae914610735576101e5565b8063cd48b7a014610641578063d09f1dbb1461067c578063d21220a7146106af578063dd62ed3e146106b7576101e5565b8063ba9a7a56116100de578063ba9a7a56146105b9578063bc25cf77146105c1578063c0c53b8b146105f4578063c45a015514610639576101e5565b80638a0b8dd81461053d57806395d89b4114610545578063a9059cbb1461054d578063b4899fc714610586576101e5565b8063439de419116101875780635b383411116101565780635b383411146104835780636a6278421461048b57806370a08231146104be57806389afcb44146104f1576101e5565b8063439de4191461039f57806345bb14fe146103d85780635909c0d5146104735780635a3d54931461047b576101e5565b80630dfe1681116101c35780630dfe1681146102f357806318160ddd1461032457806323b872dd1461033e578063313ce56714610381576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102a6575b600080fd5b6101f261073d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f610776565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102df600480360360408110156102bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cb565b604080519115158252519081900360200190f35b6102fb6107e2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61032c6107fe565b60408051918252519081900360200190f35b6102df6004803603606081101561035457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610804565b6103896108e3565b6040805160ff9092168252519081900360200190f35b61032c600480360360408110156103b557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e8565b610471600480360360a08110156103ee57600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561043257600080fd5b82018360208201111561044457600080fd5b8035906020019184600183028401116401000000008311171561046657600080fd5b919350915035610a28565b005b61032c61139f565b61032c6113a5565b61032c6113ab565b61032c600480360360208110156104a157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113b1565b61032c600480360360208110156104d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611790565b6105246004803603602081101561050757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117bc565b6040805192835260208301919091528051918290030190f35b61032c611c0a565b6101f2611c8e565b6102df6004803603604081101561056357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611cc7565b61032c6004803603602081101561059c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cd4565b61032c611d8f565b610471600480360360208110156105d757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d95565b6104716004803603606081101561060a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160409091013516611f8b565b6102fb6120b8565b6104716004803603604081101561065757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120d4565b6104716004803603602081101561069257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166121f8565b6102fb612313565b61032c600480360360408110156106cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661232f565b61047161234c565b61032c6004803603602081101561071057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612497565b6102fb6125cf565b6104716125eb565b6040518060400160405280600681526020017f45786361766f000000000000000000000000000000000000000000000000000081525081565b6006546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60006107d83384846127d1565b5060015b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b60045490565b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146108ce5773ffffffffffffffffffffffffffffffffffffffff8416600090815260116020908152604080832033845290915290205461089c908363ffffffff61284016565b73ffffffffffffffffffffffffffffffffffffffff851660009081526011602090815260408083203384529091529020555b6108d98484846128b2565b5060019392505050565b601281565b600060125460011461095b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517ffaf69328000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff85166024830152604482018490525173ba214d175fd40271617ef368ce4a027847c439899163faf69328916064808301926020929190829003018186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d6020811015610a1a57600080fd5b505160016012559392505050565b601254600114610a9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b600060125560035473ffffffffffffffffffffffffffffffffffffffff163314610b2457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f45786361766f3a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b610b2c6131c3565b6000871180610b3b5750600086115b610b90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132266022913960400191505060405180910390fd5b600080610b9b610776565b5091509150816dffffffffffffffffffffffffffff1689108015610bce5750806dffffffffffffffffffffffffffff1688105b610c3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45786361766f3a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff908116604085018190526002548216606086015290881614801590610ca65750826060015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b610d1157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f45786361766f3a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b8815610d2657610d268360400151888b6129b2565b8715610d3b57610d3b8360600151888a6129b2565b8415610e1d578673ffffffffffffffffffffffffffffffffffffffff1663e2fdc6b0338b8b8a8a6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050505b60408084015181517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915173ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b505183526060830151604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015610f2f57600080fd5b505afa158015610f43573d6000803e3d6000fd5b505050506040513d6020811015610f5957600080fd5b5051602084015282516000906dffffffffffffffffffffffffffff84168b900310610f85576000610f9f565b89836dffffffffffffffffffffffffffff16038460000151035b9050600089836dffffffffffffffffffffffffffff1603856020015111610fc7576000610fe1565b89836dffffffffffffffffffffffffffff16038560200151035b90506000821180610ff25750600081115b611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061326d6021913960400191505060405180910390fd5b61107d61105d836004890263ffffffff612bbf16565b86516110719061271063ffffffff612bbf16565b9063ffffffff61284016565b60808601526110af611098826004890263ffffffff612bbf16565b60208701516110719061271063ffffffff612bbf16565b60a08601526110eb6305f5e1006110df6dffffffffffffffffffffffffffff87811690871663ffffffff612bbf16565b9063ffffffff612bbf16565b60a086015160808701516111049163ffffffff612bbf16565b101561117157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f45786361766f3a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60105473ffffffffffffffffffffffffffffffffffffffff16156113185760105460015460009173ffffffffffffffffffffffffffffffffffffffff9182169116146111bf576008546111c3565b6007545b600654875160208901519293507c010000000000000000000000000000000000000000000000000000000090910463ffffffff169161120491908888612c45565b6006547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681146113115760105460015460009173ffffffffffffffffffffffffffffffffffffffff91821691161461126357600854611267565b6007545b600f5460065491925073ffffffffffffffffffffffffffffffffffffffff169063a0712d68907c0100000000000000000000000000000000000000000000000000000000900463ffffffff16849003858403816112c057fe5b046040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112f757600080fd5b505af115801561130b573d6000803e3d6000fd5b50505050505b505061132c565b61132c856000015186602001518686612c45565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001601255505050505050505050565b60075490565b60085490565b60055490565b600060125460011461142457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601281905580611434610776565b50600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156114ae57600080fd5b505afa1580156114c2573d6000803e3d6000fd5b505050506040513d60208110156114d857600080fd5b5051600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b5051905060006115a1836dffffffffffffffffffffffffffff871663ffffffff61284016565b905060006115c5836dffffffffffffffffffffffffffff871663ffffffff61284016565b60045490915060006115e56115e0858563ffffffff612bbf16565b612f01565b905081611677576115fe816103e863ffffffff61284016565b985061160e60006103e880612f52565b60008911611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061328e6025913960400191505060405180910390fd5b6116728a8a8b612f52565b611737565b6116d16dffffffffffffffffffffffffffff891661169b868563ffffffff612bbf16565b816116a257fe5b046dffffffffffffffffffffffffffff89166116c4868663ffffffff612bbf16565b816116cb57fe5b04613050565b98506000891161172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061328e6025913960400191505060405180910390fd5b6117378a8a83612f52565b61174386868a8a612c45565b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050600160125550949695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c60205260409020545b919050565b60008060125460011461183057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601281905580611840610776565b50600154600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d60208110156118ec57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d602081101561198a57600080fd5b5051306000908152600c602052604090205460045491925090806119b4838663ffffffff612bbf16565b816119bb57fe5b049950806119cf838563ffffffff612bbf16565b816119d657fe5b04985060008a1180156119e95750600089115b611a3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132486025913960400191505060405180910390fd5b611a483083613068565b611a53868c8c6129b2565b611a5e858c8b6129b2565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8816916370a08231916024808301926020929190829003018186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8716916370a0823191602480820192602092909190829003018186803b158015611b6657600080fd5b505afa158015611b7a573d6000803e3d6000fd5b505050506040513d6020811015611b9057600080fd5b50519250611ba084848a8a612c45565b604080518b8152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001601281905550915091565b60008073ba214d175fd40271617ef368ce4a027847c4398963c18c483f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611c5d57600080fd5b505af4158015611c71573d6000803e3d6000fd5b505050506040513d6020811015611c8757600080fd5b5051905090565b6040518060400160405280600681526020017f45584341564f000000000000000000000000000000000000000000000000000081525081565b60006107d83384846128b2565b604080517f012fdd2300000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff84166024830152915173ba214d175fd40271617ef368ce4a027847c439899163012fdd23916044808301926020929190829003018186803b158015611d5d57600080fd5b505af4158015611d71573d6000803e3d6000fd5b505050506040513d6020811015611d8757600080fd5b505192915050565b6103e881565b601254600114611e0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601255600154600254600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611ee29285928792611edd926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611ea557600080fd5b505afa158015611eb9573d6000803e3d6000fd5b505050506040513d6020811015611ecf57600080fd5b50519063ffffffff61284016565b6129b2565b600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f819284928792611edd926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b158015611ea557600080fd5b5050600160125550565b601254600114611ffc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517fa4559a290000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8087166024830152808616604483015284166064820152905173ba214d175fd40271617ef368ce4a027847c439899263a4559a299260848082019391829003018186803b15801561209657600080fd5b505af41580156120aa573d6000803e3d6000fd5b505060016012555050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60125460011461214557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f58abccf20000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff808616602483015284166044820152905173ba214d175fd40271617ef368ce4a027847c43989926358abccf29260648082019391829003018186803b1580156121d757600080fd5b505af41580156121eb573d6000803e3d6000fd5b5050600160125550505050565b60125460011461226957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f8f47e59d0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff84166024820152905173ba214d175fd40271617ef368ce4a027847c4398992638f47e59d9260448082019391829003018186803b1580156122f357600080fd5b505af4158015612307573d6000803e3d6000fd5b50506001601255505050565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b601160209081526000928352604080842090915290825290205481565b6012546001146123bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517f68e2e3af00000000000000000000000000000000000000000000000000000000815260048101929092525133917f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145569173ba214d175fd40271617ef368ce4a027847c43989916368e2e3af916024808301926020929190829003018186803b15801561245357600080fd5b505af4158015612467573d6000803e3d6000fd5b505050506040513d602081101561247d57600080fd5b505160408051918252519081900360200190a26001601255565b600060125460011461250a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b60006012819055604080517fe571705a000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff841660248301525173ba214d175fd40271617ef368ce4a027847c439899163e571705a916044808301926020929190829003018186803b15801561259857600080fd5b505af41580156125ac573d6000803e3d6000fd5b505050506040513d60208110156125c257600080fd5b5051600160125592915050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b60125460011461265c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45786361766f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000601255600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516127ca9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156126d357600080fd5b505afa1580156126e7573d6000803e3d6000fd5b505050506040513d60208110156126fd57600080fd5b5051600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d602081101561279a57600080fd5b50516006546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612c45565b6001601255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260116020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156107dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080517f3c0a40eb00000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff80871660248401528516604483015260648201849052915173ba214d175fd40271617ef368ce4a027847c4398992633c0a40eb9260848082019391829003018186803b15801561294657600080fd5b505af415801561295a573d6000803e3d6000fd5b505060408051848152905173ffffffffffffffffffffffffffffffffffffffff8087169450871692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310612ab857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a7b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b1a576040519150601f19603f3d011682016040523d82523d6000602084013e612b1f565b606091505b5091509150818015612b4d575080511580612b4d5750808060200190516020811015612b4a57600080fd5b50515b612bb857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45786361766f3a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b6000811580612bda57505080820282828281612bd757fe5b04145b6107dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff8411801590612c7157506dffffffffffffffffffffffffffff8311155b612cdc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f45786361766f3a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60065463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612d2c57506dffffffffffffffffffffffffffff841615155b8015612d4757506dffffffffffffffffffffffffffff831615155b15612df7578063ffffffff16612d8a85612d608661315e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61318216565b600780547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612dca84612d608761315e565b600880547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600680547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b60006003821115612f44575080600160028204015b81811015612f3e57809150600281828581612f2d57fe5b040181612f3657fe5b049050612f16565b506117b7565b81156117b757506001919050565b604080517f05ef5b5d00000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff861660248301526044820185905260648201849052915173ba214d175fd40271617ef368ce4a027847c43989926305ef5b5d9260848082019391829003018186803b158015612fe557600080fd5b505af4158015612ff9573d6000803e3d6000fd5b505060408051858152905173ffffffffffffffffffffffffffffffffffffffff87169350600092507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b600081831061305f5781613061565b825b9392505050565b604080517f3f999ae000000000000000000000000000000000000000000000000000000000815260006004820181905273ffffffffffffffffffffffffffffffffffffffff8516602483015260448201849052915173ba214d175fd40271617ef368ce4a027847c4398992633f999ae09260648082019391829003018186803b1580156130f457600080fd5b505af4158015613108573d6000803e3d6000fd5b50506040805184815290516000935073ffffffffffffffffffffffffffffffffffffffff861692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816131bb57fe5b049392505050565b6040518060c001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe45786361766f3a20494e53554646494349454e545f4f55545055545f414d4f554e5445786361766f3a20494e53554646494349454e545f4c49515549444954595f4255524e454445786361766f3a20494e53554646494349454e545f494e5055545f414d4f554e5445786361766f3a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220cdb16651995f61856110913e5dd9ff609ed669b0cdbe359269061b1c0a99eabb64736f6c63430006060033