0x6080604052600436106102dc575f3560e01c806370a0823111610189578063bfc2fc35116100d8578063dd62ed3e11610092578063f8b45b051161006d578063f8b45b05146108bd578063f94aa1b4146108d2578063fb78680d14610918578063fdb78c0e14610937575f80fd5b8063dd62ed3e14610846578063eafb5a3c1461088a578063ee5d9c2d146108a9575f80fd5b8063bfc2fc3514610790578063c18bc195146107af578063c31fe80a146107ce578063c8c8ebe4146107e3578063cf847706146107f8578063d3f6a15714610827575f80fd5b806394b954d611610143578063b1b08f711161011e578063b1b08f71146104a2578063b3d514fb146104a2578063b7df8b3614610758578063bcd96a2514610771575f80fd5b806394b954d6146106ef57806395d89b411461070e578063a9059cbb14610739575f80fd5b806370a0823114610652578063715018a61461067157806380c581d114610685578063893d20e8146106a45780638a63bd9b146106c75780638a8c523c146106db575f80fd5b80632e8fa821116102455780634ada218b116101ff5780634fbee193116101da5780634fbee193146105bf57806350a8e016146105f6578063590ffdce146106145780636492048014610633575f80fd5b80634ada218b146105685780634e718e48146105815780634fb2e45d146105a0575f80fd5b80632e8fa821146104b7578063313ce567146104cc57806332cde664146104e75780633bbac57914610506578063452ed4f11461053457806346ea7ac814610553575f80fd5b806318160ddd1161029657806318160ddd1461041a578063203e727e1461042e57806323b872dd1461044f5780632610eaca1461046e578063285777511461048d5780632b28fc7a146104a2575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103905780630758d924146103cc578063095ea7b3146103eb575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060085461036b9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039b575f80fd5b5060408051808201909152600b81526a2437ba2437b732bca13ab760a91b60208201525b6040516103109190612be1565b3480156103d7575f80fd5b50600c546102fc906001600160a01b031681565b3480156103f6575f80fd5b5061040a610405366004612c40565b610955565b6040519015158152602001610310565b348015610425575f80fd5b5061032e61096b565b348015610439575f80fd5b5061044d610448366004612c6a565b61098c565b005b34801561045a575f80fd5b5061040a610469366004612c81565b610a71565b348015610479575f80fd5b5061044d610488366004612d98565b610ae6565b348015610498575f80fd5b5061032e60145481565b3480156104ad575f80fd5b5061032e6107d081565b3480156104c2575f80fd5b5061032e60125481565b3480156104d7575f80fd5b5060405160128152602001610310565b3480156104f2575f80fd5b5061044d610501366004612e63565b610c14565b348015610511575f80fd5b5061040a610520366004612ea3565b60066020525f908152604090205460ff1681565b34801561053f575f80fd5b50600d546102fc906001600160a01b031681565b34801561055e575f80fd5b5061032e610bb881565b348015610573575f80fd5b5060155461040a9060ff1681565b34801561058c575f80fd5b5061044d61059b366004612c6a565b610d5b565b3480156105ab575f80fd5b5061044d6105ba366004612ea3565b610dd8565b3480156105ca575f80fd5b5061040a6105d9366004612ea3565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610601575f80fd5b5060155461040a90610100900460ff1681565b34801561061f575f80fd5b5061044d61062e366004612ecd565b610f2b565b34801561063e575f80fd5b5061044d61064d366004612c6a565b610f85565b34801561065d575f80fd5b5061032e61066c366004612ea3565b61125c565b34801561067c575f80fd5b5061044d611276565b348015610690575f80fd5b5061044d61069f366004612ecd565b611316565b3480156106af575f80fd5b506015546201000090046001600160a01b03166102fc565b3480156106d2575f80fd5b5061040a6113f8565b3480156106e6575f80fd5b5061044d611449565b3480156106fa575f80fd5b5061044d610709366004612f00565b611598565b348015610719575f80fd5b5060408051808201909152600381526224242160e91b60208201526103bf565b348015610744575f80fd5b5061040a610753366004612c40565b611697565b348015610763575f80fd5b5060135461040a9060ff1681565b34801561077c575f80fd5b5061044d61078b366004612fad565b6116ad565b34801561079b575f80fd5b5061044d6107aa366004612fd5565b6117b5565b3480156107ba575f80fd5b5061044d6107c9366004612c6a565b611844565b3480156107d9575f80fd5b5061032e60075481565b3480156107ee575f80fd5b5061032e600b5481565b348015610803575f80fd5b5060095461036b9061ffff80821691620100008104821691600160201b9091041683565b348015610832575f80fd5b5061044d610841366004612fef565b611915565b348015610851575f80fd5b5061032e610860366004612fef565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610895575f80fd5b5061044d6108a4366004612ea3565b611973565b3480156108b4575f80fd5b5061044d611c9d565b3480156108c8575f80fd5b5061032e600a5481565b3480156108dd575f80fd5b50600e54600f546108f8916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610310565b348015610923575f80fd5b5061044d610932366004613026565b611d66565b348015610942575f80fd5b5060105461040a90610100900460ff1681565b5f610961338484611f80565b5060015b92915050565b5f6109786012600a613149565b6109879064a0a7347400613157565b905090565b6015546201000090046001600160a01b031633146109c55760405162461bcd60e51b81526004016109bc9061316e565b60405180910390fd5b620f42406109d56012600a613149565b6109e49064a0a7347400613157565b6109ee9190613199565b811015610a595760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74206044820152726c6f776572207468616e20302e30303030312560681b60648201526084016109bc565b610a6b81670de0b6b3a7640000613157565b600b5550565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ad3576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610acd9084906131b8565b90915550505b610ade848484612078565b949350505050565b6015546201000090046001600160a01b03163314610b165760405162461bcd60e51b81526004016109bc9061316e565b8051825114610b5f5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110610b8257610b826131cb565b6020026020010151610b933361125c565b1015610b9d575f80fd5b610bfc33848360ff1681518110610bb657610bb66131cb565b60200260200101516012600a610bcc9190613149565b858560ff1681518110610be157610be16131cb565b6020026020010151610bf39190613157565b5f806001612385565b5080610c07816131df565b915050610b61565b505050565b6015546201000090046001600160a01b03163314610c445760405162461bcd60e51b81526004016109bc9061316e565b6107d08361ffff1611158015610c6057506107d08261ffff1611155b8015610c7257506107d08161ffff1611155b610cbe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109bc565b610bb8610ccb83856131fd565b61ffff161115610d1d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e60448201526064016109bc565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6015546201000090046001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109bc9061316e565b60c8811115610dd35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba1030b137bb329019129760611b60448201526064016109bc565b601455565b6015546201000090046001600160a01b03163314610e085760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b038116610e2e5760405162461bcd60e51b81526004016109bc9061321f565b61deac196001600160a01b03821601610e595760405162461bcd60e51b81526004016109bc9061321f565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff199081169091558684168352908220805490911660011790559254610ea89290041661125c565b1115610ed057601554610ece906201000090046001600160a01b031682610bf38261125c565b505b601580546001600160a01b038381166201000081810262010000600160b01b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6015546201000090046001600160a01b03163314610f5b5760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03610fc1575050565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f191461101657305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611049576110496131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c4919061327c565b816001815181106110d7576110d76131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061111c9086905f90869030904290600401613297565b5f604051808303815f87803b158015611133575f80fd5b505af1158015611145573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff168461116c9190613157565b6111769190613199565b90505f61118382856131b8565b865190915061ffff16156111eb57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b50909350505b602086015161ffff161561125357600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f8114611248576040519150601f19603f3d011682016040523d82523d5f602084013e61124d565b606091505b50909350505b50505050505050565b6001600160a01b03165f9081526020819052604090205490565b6015546201000090046001600160a01b031633146112a65760405162461bcd60e51b81526004016109bc9061316e565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff19169055845462010000600160b01b03198116909555519290930416919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546201000090046001600160a01b031633146113465760405162461bcd60e51b81526004016109bc9061316e565b8015155f0361137057506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156113ca576203f4806002544261138a91906131b8565b116113ca5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109bc565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6015545f906201000090046001600160a01b0316331461142a5760405162461bcd60e51b81526004016109bc9061316e565b600c546114439030906001600160a01b03165f19611f80565b50600190565b6015546201000090046001600160a01b031633146114795760405162461bcd60e51b81526004016109bc9061316e565b60155460ff16156114cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109bc565b601554610100900460ff166115235760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109bc565b6015805460ff1916600117905542600755600d546127109061154d906001600160a01b031661125c565b61155890600f613157565b6115629190613199565b601155600d546127109061157e906001600160a01b031661125c565b61158990601e613157565b6115939190613199565b601255565b6015546201000090046001600160a01b031633146115c85760405162461bcd60e51b81526004016109bc9061316e565b80518251146116115760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110611634576116346131cb565b602002602001015160065f858460ff1681518110611654576116546131cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061168f816131df565b915050611613565b5f6116a3338484612078565b5060019392505050565b6015546201000090046001600160a01b031633146116dd5760405162461bcd60e51b81526004016109bc9061316e565b6009805463ffffffff19166201000061ffff8481169190910261ffff19169190911790841617905561170f82826131fd565b6009805465ffff000000001916600160201b61ffff938416021790556008545f9161174391620100008104821691166131fd565b60095461ffff9182169250600160201b900416811015610c0f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b60648201526084016109bc565b6015546201000090046001600160a01b031633146117e55760405162461bcd60e51b81526004016109bc9061316e565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546201000090046001600160a01b031633146118745760405162461bcd60e51b81526004016109bc9061316e565b620f42406118846012600a613149565b6118939064a0a7347400613157565b61189d9190613199565b8110156118fd5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015267302e30303030312560c01b60648201526084016109bc565b61190f81670de0b6b3a7640000613157565b600a5550565b6015546201000090046001600160a01b031633146119455760405162461bcd60e51b81526004016109bc9061316e565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6015546201000090046001600160a01b031633146119a35760405162461bcd60e51b81526004016109bc9061316e565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061327c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a77919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae4919061327c565b90506001600160a01b038116611c5657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b54919061327c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc3919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c31919061327c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055611c72565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b038416908117909155610c0f9030905f19611f80565b6015546201000090046001600160a01b03163314611ccd5760405162461bcd60e51b81526004016109bc9061316e565b601554610100900460ff1615611d255760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109bc565b6015546040516001600160a01b036201000090920491909116904780156108fc02915f818181858888f19350505050158015611d63573d5f803e3d5ffd5b50565b6015546201000090046001600160a01b03163314611d965760405162461bcd60e51b81526004016109bc9061316e565b8284611da46012600a613149565b611db39064a0a7347400613157565b611dbd9190613157565b611dc79190613199565b6011558082611dd86012600a613149565b611de79064a0a7347400613157565b611df19190613157565b611dfb9190613199565b60128190556011541115611e5b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016109bc565b600d5461271090611e74906001600160a01b031661125c565b611e7f906096613157565b611e899190613199565b6012541115611ee65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016109bc565b620f4240611ef66012600a613149565b611f059064a0a7347400613157565b611f0f9190613199565b6012541015611f305760405162461bcd60e51b81526004016109bc90613306565b620f4240611f406012600a613149565b611f4f9064a0a7347400613157565b611f599190613199565b6011541015611f7a5760405162461bcd60e51b81526004016109bc90613306565b50505050565b6001600160a01b038316611fcc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166120dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bc565b6001600160a01b03831661213f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bc565b5f82116121a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109bc565b6001600160a01b0384165f908152600160205260408120548190819060ff16156121cd57600192506121fa565b6001600160a01b0386165f9081526001602052604090205460ff16156121f657600191506121fa565b5060015b61220487876125bf565b156122dd5760155460ff1661225b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109bc565b60155460ff16801561227b5750600754612277906103846126a5565b4211155b801561229f57506001600160a01b0386165f9081526006602052604090205460ff16155b156122dd5760405162461bcd60e51b815260206004820152600e60248201526d10d85b9b9bdd08189d5e481e595d60921b60448201526064016109bc565b811561236c5760105460ff1661236c57601054610100900460ff161561236c575f6123073061125c565b9050601154811061236a5760125460135460ff161561235457601454600d54612710919061233d906001600160a01b031661125c565b6123479190613157565b6123519190613199565b90505b80821061235f578091505b61236882612703565b505b505b61237a878787868686612385565b979650505050505050565b6015545f90610100900460ff1661241f576123a087876129fa565b601554610100900460ff161580156123bd57506123bd87876125bf565b80156123c7575081155b1561241f5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016109bc565b6001600160a01b0387165f9081526005602052604090205460019060ff168061245f57506001600160a01b0387165f9081526005602052604090205460ff165b1561246b57505f6124e4565b6001600160a01b0387165f9081526005602052604090205460ff166124e457600a546124968861125c565b6124a09088613354565b11156124e45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109bc565b6001600160a01b0388165f908152602081905260408120805488929061250b9084906131b8565b909155505f90508161251d5786612529565b6125298987878a612b0d565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461255c9190613354565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a891815260200190565b60405180910390a350600198975050505050505050565b6015545f906001600160a01b038481166201000090920416148015906125f957506015546001600160a01b03838116620100009092041614155b801561261657506015546201000090046001600160a01b03163214155b801561263a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561265e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561267557506001600160a01b03821661dead14155b801561268957506001600160a01b03821615155b801561269e57506001600160a01b0383163014155b9392505050565b5f806126b18385613354565b90508381101561269e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109bc565b6010805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f0361274e57506129ed565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f19146127a357305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127d6576127d66131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561282d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612851919061327c565b81600181518110612864576128646131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906128a99086905f90869030904290600401613297565b5f604051808303815f87803b1580156128c0575f80fd5b505af19250505080156128d1575060015b6128dc5750506129ed565b5f4790505f80846040015161ffff16856020015161ffff16846128ff9190613157565b6129099190613199565b90505f61291682856131b8565b865190915061ffff161561297e57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f8114612973576040519150601f19603f3d011682016040523d82523d5f602084013e612978565b606091505b50909350505b602086015161ffff16156129e657600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f81146129db576040519150601f19603f3d011682016040523d82523d5f602084013e6129e0565b606091505b50909350505b5050505050505b506010805460ff19169055565b601554610100900460ff1615612a5e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109bc565b612a6882826125bf565b158015612a825750600d546001600160a01b038281169116145b156113f4576001600160a01b0382165f9081526004602090815260408083208054600160ff1991821681179092556005845293829020805490941681179093556015805461010061ff00199182168117909255601080549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611838565b5f808415612b22575060085461ffff16612b4b565b8315612b3b575060085462010000900461ffff16612b4b565b50600854600160201b900461ffff165b5f612710612b598386613157565b612b639190613199565b305f90815260208190526040812080549293508392839290612b86908490613354565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bd582866131b8565b98975050505050505050565b5f6020808352835180828501525f5b81811015612c0c57858101830151858201604001528201612bf0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d63575f80fd5b5f8060408385031215612c51575f80fd5b8235612c5c81612c2c565b946020939093013593505050565b5f60208284031215612c7a575f80fd5b5035919050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612c2c565b92506020840135612cae81612c2c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cfc57612cfc612cbf565b604052919050565b5f67ffffffffffffffff821115612d1d57612d1d612cbf565b5060051b60200190565b5f82601f830112612d36575f80fd5b81356020612d4b612d4683612d04565b612cd3565b82815260059290921b84018101918181019086841115612d69575f80fd5b8286015b84811015612d8d578035612d8081612c2c565b8352918301918301612d6d565b509695505050505050565b5f8060408385031215612da9575f80fd5b823567ffffffffffffffff80821115612dc0575f80fd5b612dcc86838701612d27565b9350602091508185013581811115612de2575f80fd5b85019050601f81018613612df4575f80fd5b8035612e02612d4682612d04565b81815260059190911b82018301908381019088831115612e20575f80fd5b928401925b82841015612e3e57833582529284019290840190612e25565b80955050505050509250929050565b803561ffff81168114612e5e575f80fd5b919050565b5f805f60608486031215612e75575f80fd5b612e7e84612e4d565b9250612e8c60208501612e4d565b9150612e9a60408501612e4d565b90509250925092565b5f60208284031215612eb3575f80fd5b813561269e81612c2c565b80358015158114612e5e575f80fd5b5f8060408385031215612ede575f80fd5b8235612ee981612c2c565b9150612ef760208401612ebe565b90509250929050565b5f8060408385031215612f11575f80fd5b823567ffffffffffffffff80821115612f28575f80fd5b612f3486838701612d27565b9350602091508185013581811115612f4a575f80fd5b85019050601f81018613612f5c575f80fd5b8035612f6a612d4682612d04565b81815260059190911b82018301908381019088831115612f88575f80fd5b928401925b82841015612e3e57612f9e84612ebe565b82529284019290840190612f8d565b5f8060408385031215612fbe575f80fd5b612fc783612e4d565b9150612ef760208401612e4d565b5f8060408385031215612fe6575f80fd5b612ee983612ebe565b5f8060408385031215613000575f80fd5b823561300b81612c2c565b9150602083013561301b81612c2c565b809150509250929050565b5f805f8060808587031215613039575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156130a357815f190482111561308957613089613055565b8085161561309657918102915b93841c939080029061306e565b509250929050565b5f826130b957506001610965565b816130c557505f610965565b81600181146130db57600281146130e557613101565b6001915050610965565b60ff8411156130f6576130f6613055565b50506001821b610965565b5060208310610133831016604e8410600b8410161715613124575081810a610965565b61312e8383613069565b805f190482111561314157613141613055565b029392505050565b5f61269e60ff8416836130ab565b808202811582820484141761096557610965613055565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b5f826131b357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561096557610965613055565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036131f4576131f4613055565b60010192915050565b61ffff81811683821601908082111561321857613218613055565b5092915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f6020828403121561328c575f80fd5b815161269e81612c2c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132e55784516001600160a01b0316835293830193918301916001016132c0565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b808201808211156109655761096561305556fea26469706673582212205e45732616da51155c997ad27c5e0b98c0c355f3d2a9b0851ebb936c52785bcd64736f6c63430008140033
0x5f600281905560808190526107d060a081905260c0829052600880546307d0000065ffffffffffff199182161790915560e08290526101009290925261012052600980549091166507d0000007d01790556b217151c042e12f432e000000600a818155600b919091556101806040527360c526e97c8464313daca553d9d82cba01ccc225610140819052610160819052600e80546001600160a01b03199081168317909155600f805490911690911790556010805461ff0019169055601580546001600160b01b031916620100003302179055620000e090601290620007b1565b620000f19064a0a7347400620007c8565b601580546001600160a01b03620100009182900481165f9081526020819052604081209490945591540416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200014c6012600a620007b1565b6200015d9064a0a7347400620007c8565b60405190815260200160405180910390a346603803620001a357600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002a1565b46606103620001d857600c80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620002a1565b4660011480620001e85750466004145b80620001f45750466003145b80620002005750466005145b156200023257600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002a1565b4661a86a036200026857600c80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002a1565b4660fa036200029d57600c80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002a1565b5f80fd5b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003189190620007e2565b6001600160a01b031663c9c65396600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039d9190620007e2565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015620003e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200040d9190620007e2565b600d80546001600160a01b0319166001600160a01b039283169081179091555f908152600160208190526040909120805460ff19169091179055601554600c54620004659262010000909204821691165f19620005a2565b600c54620004809030906001600160a01b03165f19620005a2565b601580546001600160a01b03620100009182900481165f908152600560208181526040808420805460ff19908116600190811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905597549690960490941683526004815292822080548616851790559091527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548416831790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f80549092161790556200080a565b6001600160a01b038316620005f45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006425760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005eb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006f657815f1904821115620006da57620006da620006a2565b80851615620006e857918102915b93841c9390800290620006bb565b509250929050565b5f826200070e57506001620007ab565b816200071c57505f620007ab565b8160018114620007355760028114620007405762000760565b6001915050620007ab565b60ff841115620007545762000754620006a2565b50506001821b620007ab565b5060208310610133831016604e8410600b841016171562000785575081810a620007ab565b620007918383620006b6565b805f1904821115620007a757620007a7620006a2565b0290505b92915050565b5f620007c160ff841683620006fe565b9392505050565b8082028115828204841417620007ab57620007ab620006a2565b5f60208284031215620007f3575f80fd5b81516001600160a01b0381168114620007c1575f80fd5b61339d80620008185f395ff3fe6080604052600436106102dc575f3560e01c806370a0823111610189578063bfc2fc35116100d8578063dd62ed3e11610092578063f8b45b051161006d578063f8b45b05146108bd578063f94aa1b4146108d2578063fb78680d14610918578063fdb78c0e14610937575f80fd5b8063dd62ed3e14610846578063eafb5a3c1461088a578063ee5d9c2d146108a9575f80fd5b8063bfc2fc3514610790578063c18bc195146107af578063c31fe80a146107ce578063c8c8ebe4146107e3578063cf847706146107f8578063d3f6a15714610827575f80fd5b806394b954d611610143578063b1b08f711161011e578063b1b08f71146104a2578063b3d514fb146104a2578063b7df8b3614610758578063bcd96a2514610771575f80fd5b806394b954d6146106ef57806395d89b411461070e578063a9059cbb14610739575f80fd5b806370a0823114610652578063715018a61461067157806380c581d114610685578063893d20e8146106a45780638a63bd9b146106c75780638a8c523c146106db575f80fd5b80632e8fa821116102455780634ada218b116101ff5780634fbee193116101da5780634fbee193146105bf57806350a8e016146105f6578063590ffdce146106145780636492048014610633575f80fd5b80634ada218b146105685780634e718e48146105815780634fb2e45d146105a0575f80fd5b80632e8fa821146104b7578063313ce567146104cc57806332cde664146104e75780633bbac57914610506578063452ed4f11461053457806346ea7ac814610553575f80fd5b806318160ddd1161029657806318160ddd1461041a578063203e727e1461042e57806323b872dd1461044f5780632610eaca1461046e578063285777511461048d5780632b28fc7a146104a2575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103905780630758d924146103cc578063095ea7b3146103eb575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060085461036b9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039b575f80fd5b5060408051808201909152600b81526a2437ba2437b732bca13ab760a91b60208201525b6040516103109190612be1565b3480156103d7575f80fd5b50600c546102fc906001600160a01b031681565b3480156103f6575f80fd5b5061040a610405366004612c40565b610955565b6040519015158152602001610310565b348015610425575f80fd5b5061032e61096b565b348015610439575f80fd5b5061044d610448366004612c6a565b61098c565b005b34801561045a575f80fd5b5061040a610469366004612c81565b610a71565b348015610479575f80fd5b5061044d610488366004612d98565b610ae6565b348015610498575f80fd5b5061032e60145481565b3480156104ad575f80fd5b5061032e6107d081565b3480156104c2575f80fd5b5061032e60125481565b3480156104d7575f80fd5b5060405160128152602001610310565b3480156104f2575f80fd5b5061044d610501366004612e63565b610c14565b348015610511575f80fd5b5061040a610520366004612ea3565b60066020525f908152604090205460ff1681565b34801561053f575f80fd5b50600d546102fc906001600160a01b031681565b34801561055e575f80fd5b5061032e610bb881565b348015610573575f80fd5b5060155461040a9060ff1681565b34801561058c575f80fd5b5061044d61059b366004612c6a565b610d5b565b3480156105ab575f80fd5b5061044d6105ba366004612ea3565b610dd8565b3480156105ca575f80fd5b5061040a6105d9366004612ea3565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610601575f80fd5b5060155461040a90610100900460ff1681565b34801561061f575f80fd5b5061044d61062e366004612ecd565b610f2b565b34801561063e575f80fd5b5061044d61064d366004612c6a565b610f85565b34801561065d575f80fd5b5061032e61066c366004612ea3565b61125c565b34801561067c575f80fd5b5061044d611276565b348015610690575f80fd5b5061044d61069f366004612ecd565b611316565b3480156106af575f80fd5b506015546201000090046001600160a01b03166102fc565b3480156106d2575f80fd5b5061040a6113f8565b3480156106e6575f80fd5b5061044d611449565b3480156106fa575f80fd5b5061044d610709366004612f00565b611598565b348015610719575f80fd5b5060408051808201909152600381526224242160e91b60208201526103bf565b348015610744575f80fd5b5061040a610753366004612c40565b611697565b348015610763575f80fd5b5060135461040a9060ff1681565b34801561077c575f80fd5b5061044d61078b366004612fad565b6116ad565b34801561079b575f80fd5b5061044d6107aa366004612fd5565b6117b5565b3480156107ba575f80fd5b5061044d6107c9366004612c6a565b611844565b3480156107d9575f80fd5b5061032e60075481565b3480156107ee575f80fd5b5061032e600b5481565b348015610803575f80fd5b5060095461036b9061ffff80821691620100008104821691600160201b9091041683565b348015610832575f80fd5b5061044d610841366004612fef565b611915565b348015610851575f80fd5b5061032e610860366004612fef565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610895575f80fd5b5061044d6108a4366004612ea3565b611973565b3480156108b4575f80fd5b5061044d611c9d565b3480156108c8575f80fd5b5061032e600a5481565b3480156108dd575f80fd5b50600e54600f546108f8916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610310565b348015610923575f80fd5b5061044d610932366004613026565b611d66565b348015610942575f80fd5b5060105461040a90610100900460ff1681565b5f610961338484611f80565b5060015b92915050565b5f6109786012600a613149565b6109879064a0a7347400613157565b905090565b6015546201000090046001600160a01b031633146109c55760405162461bcd60e51b81526004016109bc9061316e565b60405180910390fd5b620f42406109d56012600a613149565b6109e49064a0a7347400613157565b6109ee9190613199565b811015610a595760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74206044820152726c6f776572207468616e20302e30303030312560681b60648201526084016109bc565b610a6b81670de0b6b3a7640000613157565b600b5550565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ad3576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610acd9084906131b8565b90915550505b610ade848484612078565b949350505050565b6015546201000090046001600160a01b03163314610b165760405162461bcd60e51b81526004016109bc9061316e565b8051825114610b5f5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110610b8257610b826131cb565b6020026020010151610b933361125c565b1015610b9d575f80fd5b610bfc33848360ff1681518110610bb657610bb66131cb565b60200260200101516012600a610bcc9190613149565b858560ff1681518110610be157610be16131cb565b6020026020010151610bf39190613157565b5f806001612385565b5080610c07816131df565b915050610b61565b505050565b6015546201000090046001600160a01b03163314610c445760405162461bcd60e51b81526004016109bc9061316e565b6107d08361ffff1611158015610c6057506107d08261ffff1611155b8015610c7257506107d08161ffff1611155b610cbe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109bc565b610bb8610ccb83856131fd565b61ffff161115610d1d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e60448201526064016109bc565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6015546201000090046001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109bc9061316e565b60c8811115610dd35760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba1030b137bb329019129760611b60448201526064016109bc565b601455565b6015546201000090046001600160a01b03163314610e085760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b038116610e2e5760405162461bcd60e51b81526004016109bc9061321f565b61deac196001600160a01b03821601610e595760405162461bcd60e51b81526004016109bc9061321f565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff199081169091558684168352908220805490911660011790559254610ea89290041661125c565b1115610ed057601554610ece906201000090046001600160a01b031682610bf38261125c565b505b601580546001600160a01b038381166201000081810262010000600160b01b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6015546201000090046001600160a01b03163314610f5b5760405162461bcd60e51b81526004016109bc9061316e565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03610fc1575050565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f191461101657305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611049576110496131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c4919061327c565b816001815181106110d7576110d76131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061111c9086905f90869030904290600401613297565b5f604051808303815f87803b158015611133575f80fd5b505af1158015611145573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff168461116c9190613157565b6111769190613199565b90505f61118382856131b8565b865190915061ffff16156111eb57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f81146111e0576040519150601f19603f3d011682016040523d82523d5f602084013e6111e5565b606091505b50909350505b602086015161ffff161561125357600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f8114611248576040519150601f19603f3d011682016040523d82523d5f602084013e61124d565b606091505b50909350505b50505050505050565b6001600160a01b03165f9081526020819052604090205490565b6015546201000090046001600160a01b031633146112a65760405162461bcd60e51b81526004016109bc9061316e565b601580546001600160a01b03620100009182900481165f90815260056020526040808220805460ff19169055845462010000600160b01b03198116909555519290930416919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546201000090046001600160a01b031633146113465760405162461bcd60e51b81526004016109bc9061316e565b8015155f0361137057506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156113ca576203f4806002544261138a91906131b8565b116113ca5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b60448201526064016109bc565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6015545f906201000090046001600160a01b0316331461142a5760405162461bcd60e51b81526004016109bc9061316e565b600c546114439030906001600160a01b03165f19611f80565b50600190565b6015546201000090046001600160a01b031633146114795760405162461bcd60e51b81526004016109bc9061316e565b60155460ff16156114cc5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016109bc565b601554610100900460ff166115235760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016109bc565b6015805460ff1916600117905542600755600d546127109061154d906001600160a01b031661125c565b61155890600f613157565b6115629190613199565b601155600d546127109061157e906001600160a01b031661125c565b61158990601e613157565b6115939190613199565b601255565b6015546201000090046001600160a01b031633146115c85760405162461bcd60e51b81526004016109bc9061316e565b80518251146116115760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064016109bc565b5f5b82518160ff161015610c0f57818160ff1681518110611634576116346131cb565b602002602001015160065f858460ff1681518110611654576116546131cb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061168f816131df565b915050611613565b5f6116a3338484612078565b5060019392505050565b6015546201000090046001600160a01b031633146116dd5760405162461bcd60e51b81526004016109bc9061316e565b6009805463ffffffff19166201000061ffff8481169190910261ffff19169190911790841617905561170f82826131fd565b6009805465ffff000000001916600160201b61ffff938416021790556008545f9161174391620100008104821691166131fd565b60095461ffff9182169250600160201b900416811015610c0f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b60648201526084016109bc565b6015546201000090046001600160a01b031633146117e55760405162461bcd60e51b81526004016109bc9061316e565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546201000090046001600160a01b031633146118745760405162461bcd60e51b81526004016109bc9061316e565b620f42406118846012600a613149565b6118939064a0a7347400613157565b61189d9190613199565b8110156118fd5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015267302e30303030312560c01b60648201526084016109bc565b61190f81670de0b6b3a7640000613157565b600a5550565b6015546201000090046001600160a01b031633146119455760405162461bcd60e51b81526004016109bc9061316e565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6015546201000090046001600160a01b031633146119a35760405162461bcd60e51b81526004016109bc9061316e565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061327c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a77919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae4919061327c565b90506001600160a01b038116611c5657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b54919061327c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc3919061327c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c31919061327c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055611c72565b600d80546001600160a01b0319166001600160a01b0383161790555b600c80546001600160a01b0319166001600160a01b038416908117909155610c0f9030905f19611f80565b6015546201000090046001600160a01b03163314611ccd5760405162461bcd60e51b81526004016109bc9061316e565b601554610100900460ff1615611d255760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e0000000060448201526064016109bc565b6015546040516001600160a01b036201000090920491909116904780156108fc02915f818181858888f19350505050158015611d63573d5f803e3d5ffd5b50565b6015546201000090046001600160a01b03163314611d965760405162461bcd60e51b81526004016109bc9061316e565b8284611da46012600a613149565b611db39064a0a7347400613157565b611dbd9190613157565b611dc79190613199565b6011558082611dd86012600a613149565b611de79064a0a7347400613157565b611df19190613157565b611dfb9190613199565b60128190556011541115611e5b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016109bc565b600d5461271090611e74906001600160a01b031661125c565b611e7f906096613157565b611e899190613199565b6012541115611ee65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016109bc565b620f4240611ef66012600a613149565b611f059064a0a7347400613157565b611f0f9190613199565b6012541015611f305760405162461bcd60e51b81526004016109bc90613306565b620f4240611f406012600a613149565b611f4f9064a0a7347400613157565b611f599190613199565b6011541015611f7a5760405162461bcd60e51b81526004016109bc90613306565b50505050565b6001600160a01b038316611fcc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b0382166120185760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109bc565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166120dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bc565b6001600160a01b03831661213f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bc565b5f82116121a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109bc565b6001600160a01b0384165f908152600160205260408120548190819060ff16156121cd57600192506121fa565b6001600160a01b0386165f9081526001602052604090205460ff16156121f657600191506121fa565b5060015b61220487876125bf565b156122dd5760155460ff1661225b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109bc565b60155460ff16801561227b5750600754612277906103846126a5565b4211155b801561229f57506001600160a01b0386165f9081526006602052604090205460ff16155b156122dd5760405162461bcd60e51b815260206004820152600e60248201526d10d85b9b9bdd08189d5e481e595d60921b60448201526064016109bc565b811561236c5760105460ff1661236c57601054610100900460ff161561236c575f6123073061125c565b9050601154811061236a5760125460135460ff161561235457601454600d54612710919061233d906001600160a01b031661125c565b6123479190613157565b6123519190613199565b90505b80821061235f578091505b61236882612703565b505b505b61237a878787868686612385565b979650505050505050565b6015545f90610100900460ff1661241f576123a087876129fa565b601554610100900460ff161580156123bd57506123bd87876125bf565b80156123c7575081155b1561241f5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016109bc565b6001600160a01b0387165f9081526005602052604090205460019060ff168061245f57506001600160a01b0387165f9081526005602052604090205460ff165b1561246b57505f6124e4565b6001600160a01b0387165f9081526005602052604090205460ff166124e457600a546124968861125c565b6124a09088613354565b11156124e45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109bc565b6001600160a01b0388165f908152602081905260408120805488929061250b9084906131b8565b909155505f90508161251d5786612529565b6125298987878a612b0d565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461255c9190613354565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a891815260200190565b60405180910390a350600198975050505050505050565b6015545f906001600160a01b038481166201000090920416148015906125f957506015546001600160a01b03838116620100009092041614155b801561261657506015546201000090046001600160a01b03163214155b801561263a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561265e57506001600160a01b0383165f9081526004602052604090205460ff16155b801561267557506001600160a01b03821661dead14155b801561268957506001600160a01b03821615155b801561269e57506001600160a01b0383163014155b9392505050565b5f806126b18385613354565b90508381101561269e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109bc565b6010805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052905f0361274e57506129ed565b305f908152600360209081526040808320600c546001600160a01b031684529091529020545f19146127a357305f908152600360209081526040808320600c546001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127d6576127d66131cb565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561282d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612851919061327c565b81600181518110612864576128646131cb565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906128a99086905f90869030904290600401613297565b5f604051808303815f87803b1580156128c0575f80fd5b505af19250505080156128d1575060015b6128dc5750506129ed565b5f4790505f80846040015161ffff16856020015161ffff16846128ff9190613157565b6129099190613199565b90505f61291682856131b8565b865190915061ffff161561297e57600e546040516001600160a01b03909116906188b89083905f818181858888f193505050503d805f8114612973576040519150601f19603f3d011682016040523d82523d5f602084013e612978565b606091505b50909350505b602086015161ffff16156129e657600f546040516001600160a01b03909116906188b89084905f818181858888f193505050503d805f81146129db576040519150601f19603f3d011682016040523d82523d5f602084013e6129e0565b606091505b50909350505b5050505050505b506010805460ff19169055565b601554610100900460ff1615612a5e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109bc565b612a6882826125bf565b158015612a825750600d546001600160a01b038281169116145b156113f4576001600160a01b0382165f9081526004602090815260408083208054600160ff1991821681179092556005845293829020805490941681179093556015805461010061ff00199182168117909255601080549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611838565b5f808415612b22575060085461ffff16612b4b565b8315612b3b575060085462010000900461ffff16612b4b565b50600854600160201b900461ffff165b5f612710612b598386613157565b612b639190613199565b305f90815260208190526040812080549293508392839290612b86908490613354565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bd582866131b8565b98975050505050505050565b5f6020808352835180828501525f5b81811015612c0c57858101830151858201604001528201612bf0565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d63575f80fd5b5f8060408385031215612c51575f80fd5b8235612c5c81612c2c565b946020939093013593505050565b5f60208284031215612c7a575f80fd5b5035919050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612c2c565b92506020840135612cae81612c2c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cfc57612cfc612cbf565b604052919050565b5f67ffffffffffffffff821115612d1d57612d1d612cbf565b5060051b60200190565b5f82601f830112612d36575f80fd5b81356020612d4b612d4683612d04565b612cd3565b82815260059290921b84018101918181019086841115612d69575f80fd5b8286015b84811015612d8d578035612d8081612c2c565b8352918301918301612d6d565b509695505050505050565b5f8060408385031215612da9575f80fd5b823567ffffffffffffffff80821115612dc0575f80fd5b612dcc86838701612d27565b9350602091508185013581811115612de2575f80fd5b85019050601f81018613612df4575f80fd5b8035612e02612d4682612d04565b81815260059190911b82018301908381019088831115612e20575f80fd5b928401925b82841015612e3e57833582529284019290840190612e25565b80955050505050509250929050565b803561ffff81168114612e5e575f80fd5b919050565b5f805f60608486031215612e75575f80fd5b612e7e84612e4d565b9250612e8c60208501612e4d565b9150612e9a60408501612e4d565b90509250925092565b5f60208284031215612eb3575f80fd5b813561269e81612c2c565b80358015158114612e5e575f80fd5b5f8060408385031215612ede575f80fd5b8235612ee981612c2c565b9150612ef760208401612ebe565b90509250929050565b5f8060408385031215612f11575f80fd5b823567ffffffffffffffff80821115612f28575f80fd5b612f3486838701612d27565b9350602091508185013581811115612f4a575f80fd5b85019050601f81018613612f5c575f80fd5b8035612f6a612d4682612d04565b81815260059190911b82018301908381019088831115612f88575f80fd5b928401925b82841015612e3e57612f9e84612ebe565b82529284019290840190612f8d565b5f8060408385031215612fbe575f80fd5b612fc783612e4d565b9150612ef760208401612e4d565b5f8060408385031215612fe6575f80fd5b612ee983612ebe565b5f8060408385031215613000575f80fd5b823561300b81612c2c565b9150602083013561301b81612c2c565b809150509250929050565b5f805f8060808587031215613039575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156130a357815f190482111561308957613089613055565b8085161561309657918102915b93841c939080029061306e565b509250929050565b5f826130b957506001610965565b816130c557505f610965565b81600181146130db57600281146130e557613101565b6001915050610965565b60ff8411156130f6576130f6613055565b50506001821b610965565b5060208310610133831016604e8410600b8410161715613124575081810a610965565b61312e8383613069565b805f190482111561314157613141613055565b029392505050565b5f61269e60ff8416836130ab565b808202811582820484141761096557610965613055565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b5f826131b357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561096557610965613055565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036131f4576131f4613055565b60010192915050565b61ffff81811683821601908082111561321857613218613055565b5092915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f6020828403121561328c575f80fd5b815161269e81612c2c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132e55784516001600160a01b0316835293830193918301916001016132c0565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b808201808211156109655761096561305556fea26469706673582212205e45732616da51155c997ad27c5e0b98c0c355f3d2a9b0851ebb936c52785bcd64736f6c63430008140033