0x608060405234801561000f575f80fd5b505f80546001600160a01b0319163390811782556040519091907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36143e38061005b5f395ff3fe6080604052600436106101d2575f3560e01c8063607d441d116100fd578063925cf23011610092578063f3fef3a311610062578063f3fef3a314610464578063fa09e63014610483578063fa461e3314610282578063fbe9e751146104a2575f80fd5b8063925cf2301461041d578063ca44113814610431578063d036772d146103d3578063eef21cd214610445575f80fd5b806375cea544116100cd57806375cea544146103b4578063840ccc5a146103d357806384cee21c146102825780638da5cb5b146103e7575f80fd5b8063607d441d1461036d5780636a5ac18f1461028257806371ef8e2214610381578063747293fb14610395575f80fd5b80632c58bfb81161017357806350431ce41161014357806350431ce4146102e8578063536fff6c146102fc57806357b2e35b1461033a5780635e42f10e1461034e575f80fd5b80632c58bfb8146102b557806331e2ba55146102825780633273db6c146102c9578063352e548414610282575f80fd5b8063189b54f0116101ae578063189b54f01461023c5780631b4e38211461026357806323a69e7514610282578063253cbe4c146102a1575f80fd5b80628b83b8146101dd5780630f64d95d146101fe57806313af40351461021d575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101fc6101f73660046137dc565b6104c1565b005b348015610209575f80fd5b506101fc610218366004613877565b6105bb565b348015610228575f80fd5b506101fc6102373660046138e9565b6106eb565b348015610247575f80fd5b50610250604081565b6040519081526020015b60405180910390f35b34801561026e575f80fd5b506101fc61027d366004613945565b6107a2565b34801561028d575f80fd5b506101fc61029c3660046139f3565b610896565b3480156102ac575f80fd5b50610250602081565b3480156102c0575f80fd5b50610250601081565b3480156102d4575f80fd5b506101fc6102e3366004613a6c565b6108a2565b3480156102f3575f80fd5b506101fc610a3b565b348015610307575f80fd5b5061032a6103163660046138e9565b60016020525f908152604090205460ff1681565b604051901515815260200161025a565b348015610345575f80fd5b50610250600281565b348015610359575f80fd5b506101fc610368366004613acb565b610ad9565b348015610378575f80fd5b50610250608081565b34801561038c575f80fd5b50610250600181565b3480156103a0575f80fd5b506101fc6103af3660046138e9565b610bc8565b3480156103bf575f80fd5b506101fc6103ce366004613b0a565b610c67565b3480156103de575f80fd5b50610250600881565b3480156103f2575f80fd5b505f54610405906001600160a01b031681565b6040516001600160a01b03909116815260200161025a565b348015610428575f80fd5b50610250600481565b34801561043c575f80fd5b5061025060ff81565b348015610450575f80fd5b506101fc61045f3660046138e9565b610dee565b34801561046f575f80fd5b506101fc61047e366004613b62565b610e60565b34801561048e575f80fd5b506101fc61049d3660046138e9565b610ea5565b3480156104ad575f80fd5b506101fc6104bc366004613acb565b610f46565b5f5a90503330146105195760405162461bcd60e51b815260206004820152600e60248201527f62617463682d696e7465726e616c00000000000000000000000000000000000060448201526064015b60405180910390fd5b6105b584843561052c6020870187613b8c565b604088013561054661054160208b018b613b8c565b61101f565b60405180608001604052808981526020018a81526020018b6060013581526020018b608001358152508a8060a0019061057f9190613bd1565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506110b892505050565b50505050565b5f5a9050814311156105e957604051632e7f455960e11b815243600482015260248101839052604401610510565b5f546001600160a01b031633148015906106125750335f9081526001602052604090205460ff16155b156106305760405163ea8e4eb560e01b815260040160405180910390fd5b5f869003610651576040516320a2d33d60e01b815260040160405180910390fd5b5f61065c8888611399565b9050805f03610687576040516322416f1f60e11b81525f600482015260248101869052604401610510565b858111156106925750845b6106e089828a8a5f6106a58e8e89611573565b60405180608001604052808a81526020016106be61161f565b815260208082018f905260409182018e905281515f81529081019091526110b8565b505050505050505050565b5f546001600160a01b03163314610715576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661073c5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a35f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f5a9050814311156107d057604051632e7f455960e11b815243600482015260248101839052604401610510565b5f546001600160a01b031633148015906107f95750335f9081526001602052604090205460ff16155b156108175760405163ea8e4eb560e01b815260040160405180910390fd5b6108898b8b8b8b8b6108298f8f61101f565b604051806080016040528089815260200161084261161f565b81526020018e81526020018d8152508b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506110b892505050565b5050505050505050505050565b6105b58484848461163c565b5f546001600160a01b031633148015906108cb5750335f9081526001602052604090205460ff16155b156108e95760405163ea8e4eb560e01b815260040160405180910390fd5b5f82900361090a576040516320a2d33d60e01b815260040160405180910390fd5b61092381610919600185613c3f565b1c60019081161490565b156109705760405162461bcd60e51b815260206004820152601c60248201527f636861696e6564206c61737420686f70206d7573742072657475726e000000006044820152606401610510565b6109ba6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f81526020015f81525090565b602081018390526001600160a01b03861660408201526060810185905260808101829052845f5b8260200151811015610a05576109fa86868386866116ad565b5091506001016109e1565b506040517f17080d7e00000000000000000000000000000000000000000000000000000000815260048101829052602401610510565b5f546001600160a01b03163314610a65576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610aaf576040519150601f19603f3d011682016040523d82523d5f602084013e610ab4565b606091505b5050905080610ad6576040516312171d8360e31b815260040160405180910390fd5b50565b5f546001600160a01b03163314610b03576040516330cd747160e01b815260040160405180910390fd5b5f5b81811015610bc3575f60015f858585818110610b2357610b23613c52565b9050602002016020810190610b3891906138e9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110610b7157610b71613c52565b9050602002016020810190610b8691906138e9565b6001600160a01b03167f0491b0192bae7692618bfa4eff3f4942d2d8ec3300ef2e63d325b45e937c4ff160405160405180910390a2600101610b05565b505050565b5f546001600160a01b03163314610bf2576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610c195760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6acfd92212f0ec670af78f8ba2273e4a85ac17023475650c25be0440602bff2d9190a250565b80431115610c9157604051632e7f455960e11b815243600482015260248101829052604401610510565b5f546001600160a01b03163314801590610cba5750335f9081526001602052604090205460ff16155b15610cd85760405163ea8e4eb560e01b815260040160405180910390fd5b5f829003610cf9576040516320a2d33d60e01b815260040160405180910390fd5b5f610d0261161f565b90505f805b84811015610da15730628b83b888888885818110610d2757610d27613c52565b9050602002810190610d399190613c66565b8415610d45575f610d47565b865b6040518463ffffffff1660e01b8152600401610d6593929190613dda565b5f604051808303815f87803b158015610d7c575f80fd5b505af1925050508015610d8d575060015b15610d99578160010191505b600101610d07565b5060408051858152602081018390526001600160a01b038816917f5879520fa576ebfa42c1b99e9b65ac767409b54bb41eae59e15a331d3114be59910160405180910390a2505050505050565b5f546001600160a01b03163314610e18576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381165f81815260016020526040808220805460ff19169055517f0491b0192bae7692618bfa4eff3f4942d2d8ec3300ef2e63d325b45e937c4ff19190a250565b5f546001600160a01b03163314610e8a576040516330cd747160e01b815260040160405180910390fd5b5f54610ea19083906001600160a01b031683611900565b5050565b5f546001600160a01b03163314610ecf576040516330cd747160e01b815260040160405180910390fd5b5f546040516370a0823160e01b8152306004820152610ad69183916001600160a01b03918216918316906370a0823190602401602060405180830381865afa158015610f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f419190613ea7565b611900565b5f546001600160a01b03163314610f70576040516330cd747160e01b815260040160405180910390fd5b5f5b81811015610bc3575f838383818110610f8d57610f8d613c52565b9050602002016020810190610fa291906138e9565b90506001600160a01b038116610fcb5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6acfd92212f0ec670af78f8ba2273e4a85ac17023475650c25be0440602bff2d9190a250600101610f72565b60608167ffffffffffffffff81111561103a5761103a613c17565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090505f5b828110156110b15783838281811061108257611082613c52565b905060c0020160a0013582828151811061109e5761109e613c52565b6020908102919091010152600101611068565b5092915050565b5f8590036110d9576040516320a2d33d60e01b815260040160405180910390fd5b6110e884610919600188613c3f565b156111355760405162461bcd60e51b815260206004820152601c60248201527f636861696e6564206c61737420686f70206d7573742072657475726e000000006044820152606401610510565b61117f6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f81526020015f81525090565b6020810186905283611192600188613c3f565b815181106111a2576111a2613c52565b60209081029190910101518082526001600160a01b038a166040830152606082018990526080820186905260a0820185905288106112195780516040517fbc2c3512000000000000000000000000000000000000000000000000000000008152600481019190915260248101899052604401610510565b61122787878a868587611a2e565b6040516370a0823160e01b81523060048201525f906001600160a01b038b16906370a0823190602401602060405180830381865afa15801561126b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128f9190613ea7565b9050885f5b83602001518110156112d0575f826112af8c8c8589856116ad565b9094509150816112c6576112c68385838b8a611ab3565b5050600101611294565b505f816112dd8c85613c3f565b6112e79190613ebe565b90505f6112f687610fa0611b7c565b60408801516113059086613ebe565b61130f9190613ebe565b90508082101561133c576040516322416f1f60e11b81526004810183905260248101829052604401610510565b6001600160a01b038d167f57e239d2525ac69392c47e02c0379fa1ff49ac0fd3a3c6692a7fdcb2cadbfe838d6113728786613c3f565b6040805192835260208301919091520160405180910390a250505050505050505050505050565b5f60018082805b8581101561150b578686828181106113ba576113ba613c52565b905060c0020160600160208101906113d29190613ed1565b60ff161561144357808787838181106113ed576113ed613c52565b905060c0020160600160208101906114059190613ed1565b6040517f9070d6d4000000000000000000000000000000000000000000000000000000008152600481019290925260ff166024820152604401610510565b5f805f6114668a8a8681811061145b5761145b613c52565b905060c00201611bb5565b925092509250825f1480611478575081155b1561148c575f97505050505050505061156d565b866114978383613eea565b6114a19190613eea565b866114ae85612710613eea565b6114b89190613eea565b6114c28984613eea565b876114cf87612710613eea565b6114d99190613eea565b6114e39190613ebe565b919850965094506114f5878787611d38565b9198509650945050600190920191506113a09050565b508183111580611519575080155b15611529575f935050505061156d565b5f61153c6115378486613eea565b611d94565b9050828111611551575f94505050505061156d565b8161155c8483613c3f565b6115669190613f15565b9450505050505b92915050565b60608267ffffffffffffffff81111561158e5761158e613c17565b6040519080825280602002602001820160405280156115b7578160200160208202803683370190505b509050815f5b848110156116165781156115f0576115ec8686838181106115e0576115e0613c52565b905060c0020183611f16565b5091505b8183828151811061160357611603613c52565b60209081029190910101526001016115bd565b50509392505050565b5f61162b366010613eea565b61163790615208613ebe565b905090565b6002546001600160a01b0316331461166757604051636f61f64160e01b815260040160405180910390fd5b5f8061167583850185613b62565b915091505f8087136116875785611689565b865b90506116a483338385101561169e5783611900565b84611900565b50505050505050565b5f806116c28460800151861c60019081161490565b90505f80861180156116e3575060808501516116e390610919600189613c3f565b905081806116ee5750805b1561176d5787878781811061170557611705613c52565b905060c00201606001602081019061171d9190613ed1565b60ff161561176d5760405162461bcd60e51b815260206004820152601660248201527f636861696e656420686f70206d757374206265205632000000000000000000006044820152606401610510565b81156117f7578787611780886001613ebe565b81811061178f5761178f613c52565b905060c0020160600160208101906117a79190613ed1565b60ff16156117f75760405162461bcd60e51b815260206004820152601660248201527f636861696e656420686f70206d757374206265205632000000000000000000006044820152606401610510565b5f826118035730611835565b8888611810896001613ebe565b81811061181f5761181f613c52565b61183592602060c09092020190810191506138e9565b90505f88611844896001613ebe565b10611853578660400151611887565b89896118608a6001613ebe565b81811061186f5761186f613c52565b905060c00201602001602081019061188791906138e9565b90505f611894888a61215d565b9050848061189f5750835b6118cb576118c68b8b8b8181106118b8576118b8613c52565b905060c00201838984612198565b6118f0565b6118f08b8b8b8181106118e0576118e0613c52565b905060c002018886868686612202565b9550505050509550959350505050565b6040516001600160a01b038381166024830152604482018390525f9182918616907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161199d9190613f56565b5f604051808303815f865af19150503d805f81146119d6576040519150601f19603f3d011682016040523d82523d5f602084013e6119db565b606091505b5091509150811580611a095750805115801590611a09575080806020019051810190611a079190613f67565b155b15611a27576040516312171d8360e31b815260040160405180910390fd5b5050505050565b5f80611a3d88888887876124b2565b915091505f611a51878788606001516126d7565b9050808310156106e057845182905f90611a6b8685613c3f565b6040517ffd599b800000000000000000000000000000000000000000000000000000000081526004810194909452602484019290925260448301526064820152608401610510565b5f611abf8287866126fb565b9050845f03611b0a576040517fd646b618000000000000000000000000000000000000000000000000000000008152600481018790525f602482015260448101829052606401610510565b805f03611b175750611a27565b808514611b2e578151611b2b908683612797565b82525b5f611b5d836060015185610fa0611b4e886060015188602001518d6128d3565b611b589190613ebe565b6126d7565b905080835f015110156116a457868683855f015184611a6b9190613c3f565b5f815a8451611b8b9190613c3f565b8460200151611b9a9190613ebe565b611ba49190613ebe565b611bae903a613eea565b9392505050565b5f808080611bc660208601866138e9565b90505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611c06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2a9190613f9c565b5091509150826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f9190613fe8565b6001600160a01b0316611ca86040890160208a016138e9565b6001600160a01b031614611ccf57806001600160701b0316826001600160701b0316611ce4565b816001600160701b0316816001600160701b03165b9096509450612710611cfc6060890160408a01614003565b61ffff1610611d0d57612710611d2d565b611d1d6060880160408901614003565b611d2d9061ffff16612710613c3f565b959794965050505050565b5f805f80858711611d495785611d4b565b865b905080851115611d585750835b608081901c15611d87575f6080611d6e836128ff565b611d789190613c3f565b97881c9796871c969590951c94505b5094959394509192915050565b5f815f03611da357505f919050565b8160017001000000000000000000000000000000008210611dc95760809190911c9060401b5b680100000000000000008210611de45760409190911c9060201b5b6401000000008210611dfb5760209190911c9060101b5b620100008210611e105760109190911c9060081b5b6101008210611e245760089190911c9060041b5b60108210611e375760049190911c9060021b5b60048210611e435760011b5b6001818581611e5457611e54613f01565b048201901c90506001818581611e6c57611e6c613f01565b048201901c90506001818581611e8457611e84613f01565b048201901c90506001818581611e9c57611e9c613f01565b048201901c90506001818581611eb457611eb4613f01565b048201901c90506001818581611ecc57611ecc613f01565b048201901c90506001818581611ee457611ee4613f01565b048201901c90505f818581611efb57611efb613f01565b049050808210611f0b5780611f0d565b815b95945050505050565b5f8080612710611f2c60a0870160808801614003565b61ffff1610611f3b575f611f4b565b611f4b60a0860160808701614003565b61ffff1690505f8115611f7e57612710611f658382613c3f565b611f6f9087613eea565b611f799190613f15565b611f80565b845b90505f611f9060208801886138e9565b90505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff49190613f9c565b5091509150826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612035573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120599190613fe8565b6001600160a01b031661207260408b0160208c016138e9565b6001600160a01b03161495505f808761209e57826001600160701b0316846001600160701b03166120b3565b836001600160701b0316836001600160701b03165b91509150815f14806120c3575080155b156120d7575f985050505050505050612156565b5f6127106120eb60608e0160408f01614003565b61ffff16106120fa575f61210a565b61210a60608d0160408e01614003565b61ffff1690505f61211d82612710613c3f565b6121279089613eea565b905061214a81848161213b88612710613eea565b6121459190613ebe565b612797565b9a505050505050505050505b9250929050565b5f818360c00151901c6001165f0361217657505f61156d565b818360e00151901c60011660011461218f576002611bae565b50600192915050565b5f6121a96080860160608701613ed1565b60ff166001036121c4576121bd85846129ee565b90506121fa565b6121d46080860160608701613ed1565b60ff166002036121e9576121bd858585612d99565b6121f785845f308887612202565b90505b949350505050565b5f8061221160208901896138e9565b90505f60ff841615612229578360ff166001146122ad565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122899190613fe8565b6001600160a01b03166122a260408b0160208c016138e9565b6001600160a01b0316145b90505f6122bc8a8a8a85613212565b90505f80836122cc57825f6122cf565b5f835b9092509050306001600160a01b038a1603612434576040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015612328573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234c9190613ea7565b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f9061238d90869086908f9060248101614047565b5f604051808303815f87803b1580156123a4575f80fd5b505af11580156123b6573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa1580156123fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124229190613ea7565b61242c9190613c3f565b9650506124a3565b604080515f8152602081019182905263022c0d9f60e01b9091526001600160a01b0386169063022c0d9f9061247290859085908e9060248101614047565b5f604051808303815f87803b158015612489575f80fd5b505af115801561249b573d5f803e3d5ffd5b505050508295505b50505050509695505050505050565b5f806124e16040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b845181526020810187905260608101869052608081018690525f5b878110156126c0575f89898381811061251757612517613c52565b905060c0020160a0013590505f815f141580156125375750608084015115155b80156125465750606084015115155b6125505781612563565b6125638285606001518660800151612797565b84519091508b8b8581811061257a5761257a613c52565b905060c0020160600160208101906125929190613ed1565b60ff161580156125a55750606085015115155b156125e2576125d68c8c868181106125bf576125bf613c52565b905060c0020185876060015185895f01518e6133fa565b60608701528552612675565b8b8b858181106125f4576125f4613c52565b905060c00201606001602081019061260c9190613ed1565b60ff1660010361266d5761266a8c8c8681811061262b5761262b613c52565b905060c002018951861061263f575f612663565b89868151811061265157612651613c52565b60200260200101516001600160a01b03165b8751613476565b85525b606085018290525b8451811180156126935750604085015185516126919083613c3f565b115b156126b15784516126a49082613c3f565b6040860152602085018490525b505060808301526001016124fc565b508051602090910151909890975095505050505050565b5f6126e28383611b7c565b60408401516126f19086613ebe565b6121fa9190613ebe565b5f808460a00151848151811061271357612713613c52565b60200260200101519050805f0361272d575f915050611bae565b5f84156127615760a0860151612744600187613c3f565b8151811061275457612754613c52565b6020026020010151612767565b85606001515b905080158061277557508084145b1561278257509050611bae565b61278d828583612797565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f0361281d575f84116128045760405162461bcd60e51b815260206004820152600860248201527f6d756c4469763a300000000000000000000000000000000000000000000000006044820152606401610510565b83828161281357612813613f01565b0492505050611bae565b80841161286c5760405162461bcd60e51b815260206004820152600960248201527f6d756c4469763a6f6600000000000000000000000000000000000000000000006044820152606401610510565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f82826128e1600183613c3f565b6128eb9190613c3f565b6128f59086613eea565b6121fa9190613f15565b5f608082901c1561291d57608091821c9161291a9082613ebe565b90505b604082901c1561293a57604091821c916129379082613ebe565b90505b602082901c1561295757602091821c916129549082613ebe565b90505b601082901c1561297457601091821c916129719082613ebe565b90505b600882901c1561299157600891821c9161298e9082613ebe565b90505b600482901c156129ae57600491821c916129ab9082613ebe565b90505b600282901c156129cb57600291821c916129c89082613ebe565b90505b600182901c156129e3576129e0600182613ebe565b90505b61156d816001613ebe565b5f806129fd60208501856138e9565b90505f816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a609190613fe8565b90505f6001600160a01b038216612a7d60408801602089016138e9565b6001600160a01b03161490505f81612a955782612af5565b836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612af59190613fe8565b90505f82612b2157612b1c600173fffd8963efd1fc6a506488495d951d5263988d26614074565b612b31565b612b316401000276a36001614094565b90505f612b4460a08a0160808b01614003565b61ffff1615612b8957612710612b6060a08b0160808c01614003565b612b6c906127106140b4565b612b7a9061ffff168a613eea565b612b849190613f15565b612b8b565b875b90506002811115612ba457612ba1600282613c3f565b90505b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015612be8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c0c9190613ea7565b9050612c1b60208b018b6138e9565b60025f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550866001600160a01b031663128acb08308785878f6020016020810190612c6691906138e9565b8f604051602001612c8c9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612cbb9594939291906140cf565b60408051808303815f875af1158015612cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfa9190614113565b50506002805473ffffffffffffffffffffffffffffffffffffffff191690556040516370a0823160e01b815230600482015281906001600160a01b038616906370a0823190602401602060405180830381865afa158015612d5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d819190613ea7565b612d8b9190613c3f565b9a9950505050505050505050565b5f80612da860208601866138e9565b6001600160a01b0316638d928af86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612de3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e079190613fe8565b9050805f612e1860208801886138e9565b6001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e779190613ea7565b6040517ff94d4668000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b0384169063f94d4668906024015f60405180830381865afa158015612ed7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612efe91908101906141f5565b505090505f805f5b8351811015612f9457612f1f60408c0160208d016138e9565b6001600160a01b0316848281518110612f3a57612f3a613c52565b60200260200101516001600160a01b031603612f5557600192505b896001600160a01b0316848281518110612f7157612f71613c52565b60200260200101516001600160a01b031603612f8c57600191505b600101612f06565b50811580612fa0575080155b80612fcb57506001600160a01b038916612fc060408c0160208d016138e9565b6001600160a01b0316145b15612fe957604051636f61f64160e01b815260040160405180910390fd5b613003612ffc60408c0160208d016138e9565b878a6135dd565b6040516370a0823160e01b81523060048201525f906001600160a01b038b16906370a0823190602401602060405180830381865afa158015613047573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306b9190613ea7565b9050856001600160a01b03166352bbbe296040518060c001604052808881526020015f600181111561309f5761309f6142bc565b81526020018e60200160208101906130b791906138e9565b6001600160a01b0390811682528e166020820152604081018d90526060015f6040519080825280601f01601f191660200182016040528015613100576020820181803683370190505b50905260408051608081018252308082525f602083018190529282015260608101829052906131314261012c613ebe565b6040518563ffffffff1660e01b815260040161315094939291906142d0565b6020604051808303815f875af115801561316c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131909190613ea7565b506040516370a0823160e01b815230600482015281906001600160a01b038c16906370a0823190602401602060405180830381865afa1580156131d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f99190613ea7565b6132039190613c3f565b9b9a5050505050505050505050565b5f8261323e5761323e61322b60408701602088016138e9565b61323860208801886138e9565b86611900565b5f8061324d60208801886138e9565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613288573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ac9190613f9c565b50915091505f80856132d157826001600160701b0316846001600160701b03166132e6565b836001600160701b0316836001600160701b03165b90925090505f826132fd60408c0160208d016138e9565b6001600160a01b03166370a0823161331860208e018e6138e9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133969190613ea7565b6133a09190613c3f565b90505f6133b360608c0160408d01614003565b6133bf906127106140b4565b6133cd9061ffff1683613eea565b9050806133dc85612710613eea565b6133e69190613ebe565b6133f08483613eea565b6132039190613f15565b5f805f806134088a89611f16565b60c08701805160018d1b1790529092509050801561342e5760e08501805160018b1b1790525b815f03613442575f8093509350505061346b565b86158015906134515750868214155b1561346457613461868389612797565b95505b5084925090505b965096945050505050565b5f821580613486575060a0840135155b8061348f575081155b1561349b575080611bae565b5f806134b26134ad60208801886138e9565b613628565b91509150806134c5578392505050611bae565b5f6134d360208801886138e9565b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135329190613fe8565b6001600160a01b031661354b6040890160208a016138e9565b6001600160a01b03161490505f8161356557868411613569565b8684105b90508061357c5785945050505050611bae565b5f8785106135935761358e8886613c3f565b61359d565b61359d8589613c3f565b90505f6135b5886135af846002613eea565b8b612797565b9050878110156135ce576135c98189613c3f565b612d8b565b5f9a9950505050505050505050565b6040516001600160a01b038381166024830152604482018390525f9182918616907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611947565b60408051600481526024810182526020810180516001600160e01b03167f3850c7bd0000000000000000000000000000000000000000000000000000000017905290515f918291829182916001600160a01b0387169161368791613f56565b5f60405180830381855afa9150503d805f81146136bf576040519150601f19603f3d011682016040523d82523d5f602084013e6136c4565b606091505b50915091508115806136d7575060208151105b156137775760408051600481526024810182526020810180516001600160e01b03167fe76c01e40000000000000000000000000000000000000000000000000000000017905290516001600160a01b0387169161373391613f56565b5f60405180830381855afa9150503d805f811461376b576040519150601f19603f3d011682016040523d82523d5f602084013e613770565b606091505b5090925090505b811580613785575060208151105b1561379657505f9485945092505050565b60208101516137bb600174010000000000000000000000000000000000000000613c3f565b1695600195509350505050565b6001600160a01b0381168114610ad6575f80fd5b5f805f606084860312156137ee575f80fd5b83356137f9816137c8565b9250602084013567ffffffffffffffff811115613814575f80fd5b840160c08187031215613825575f80fd5b929592945050506040919091013590565b5f8083601f840112613846575f80fd5b50813567ffffffffffffffff81111561385d575f80fd5b60208301915083602060c083028501011115612156575f80fd5b5f805f805f805f60c0888a03121561388d575f80fd5b8735613898816137c8565b9650602088013567ffffffffffffffff8111156138b3575f80fd5b6138bf8a828b01613836565b989b909a509798604081013598606082013598506080820135975060a09091013595509350505050565b5f602082840312156138f9575f80fd5b8135611bae816137c8565b5f8083601f840112613914575f80fd5b50813567ffffffffffffffff81111561392b575f80fd5b6020830191508360208260051b8501011115612156575f80fd5b5f805f805f805f805f806101008b8d03121561395f575f80fd5b8a3561396a816137c8565b995060208b0135985060408b013567ffffffffffffffff8082111561398d575f80fd5b6139998e838f01613836565b909a50985060608d0135975060808d0135965060a08d0135955060c08d01359150808211156139c6575f80fd5b506139d38d828e01613904565b9150809450508092505060e08b013590509295989b9194979a5092959850565b5f805f8060608587031215613a06575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115613a2b575f80fd5b818701915087601f830112613a3e575f80fd5b813581811115613a4c575f80fd5b886020828501011115613a5d575f80fd5b95989497505060200194505050565b5f805f805f60808688031215613a80575f80fd5b8535613a8b816137c8565b945060208601359350604086013567ffffffffffffffff811115613aad575f80fd5b613ab988828901613836565b96999598509660600135949350505050565b5f8060208385031215613adc575f80fd5b823567ffffffffffffffff811115613af2575f80fd5b613afe85828601613904565b90969095509350505050565b5f805f8060608587031215613b1d575f80fd5b8435613b28816137c8565b9350602085013567ffffffffffffffff811115613b43575f80fd5b613b4f87828801613904565b9598909750949560400135949350505050565b5f8060408385031215613b73575f80fd5b8235613b7e816137c8565b946020939093013593505050565b5f808335601e19843603018112613ba1575f80fd5b83018035915067ffffffffffffffff821115613bbb575f80fd5b602001915060c081023603821315612156575f80fd5b5f808335601e19843603018112613be6575f80fd5b83018035915067ffffffffffffffff821115613c00575f80fd5b6020019150600581901b3603821315612156575f80fd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561156d5761156d613c2b565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613c7a575f80fd5b9190910192915050565b803561ffff81168114613c95575f80fd5b919050565b803560ff81168114613c95575f80fd5b8183525f60208085019450825f5b85811015613d4e578135613ccb816137c8565b6001600160a01b0390811688528284013590613ce6826137c8565b16878401526040613cf8838201613c84565b61ffff808216838b01526060925060ff613d13848701613c9a565b16838b01526080925080613d28848701613c84565b16928a0192909252505060a0828101359088015260c09687019690910190600101613cb8565b509495945050505050565b5f808335601e19843603018112613d6e575f80fd5b830160208101925035905067ffffffffffffffff811115613d8d575f80fd5b8060051b3603821315612156575f80fd5b8183525f60208085019450825f5b85811015613d4e578135613dbf816137c8565b6001600160a01b031687529582019590820190600101613dac565b6001600160a01b038416815260606020820152823560608201525f6020840135601e19853603018112613e0b575f80fd5b840160208101903567ffffffffffffffff811115613e27575f80fd5b60c081023603821315613e38575f80fd5b60c06080850152613e4e61012085018284613caa565b915050604085013560a0840152606085013560c0840152608085013560e0840152613e7c60a0860186613d59565b848303605f1901610100860152613e94838284613d9e565b9350505050826040830152949350505050565b5f60208284031215613eb7575f80fd5b5051919050565b8082018082111561156d5761156d613c2b565b5f60208284031215613ee1575f80fd5b611bae82613c9a565b808202811582820484141761156d5761156d613c2b565b634e487b7160e01b5f52601260045260245ffd5b5f82613f2f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5b83811015613f4e578181015183820152602001613f36565b50505f910152565b5f8251613c7a818460208701613f34565b5f60208284031215613f77575f80fd5b81518015158114611bae575f80fd5b80516001600160701b0381168114613c95575f80fd5b5f805f60608486031215613fae575f80fd5b613fb784613f86565b9250613fc560208501613f86565b9150604084015163ffffffff81168114613fdd575f80fd5b809150509250925092565b5f60208284031215613ff8575f80fd5b8151611bae816137c8565b5f60208284031215614013575f80fd5b611bae82613c84565b5f8151808452614033816020860160208601613f34565b601f01601f19169290920160200192915050565b8481528360208201526001600160a01b0383166040820152608060608201525f61278d608083018461401c565b6001600160a01b038281168282160390808211156110b1576110b1613c2b565b6001600160a01b038181168382160190808211156110b1576110b1613c2b565b61ffff8281168282160390808211156110b1576110b1613c2b565b5f6001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261410860a083018461401c565b979650505050505050565b5f8060408385031215614124575f80fd5b505080516020909101519092909150565b604051601f8201601f1916810167ffffffffffffffff8111828210171561415e5761415e613c17565b604052919050565b5f67ffffffffffffffff82111561417f5761417f613c17565b5060051b60200190565b5f82601f830112614198575f80fd5b815160206141ad6141a883614166565b614135565b8083825260208201915060208460051b8701019350868411156141ce575f80fd5b602086015b848110156141ea57805183529183019183016141d3565b509695505050505050565b5f805f60608486031215614207575f80fd5b835167ffffffffffffffff8082111561421e575f80fd5b818601915086601f830112614231575f80fd5b815160206142416141a883614166565b82815260059290921b8401810191818101908a84111561425f575f80fd5b948201945b83861015614286578551614277816137c8565b82529482019490820190614264565b9189015191975090935050508082111561429e575f80fd5b506142ab86828701614189565b925050604084015190509250925092565b634e487b7160e01b5f52602160045260245ffd5b60e08152845160e08201525f6020860151600281106142fd57634e487b7160e01b5f52602160045260245ffd5b61010083015260408601516001600160a01b031661012083015260608601516143326101408401826001600160a01b03169052565b50608086015161016083015260a086015160c06101808401526143596101a084018261401c565b91505061439b60208301866001600160a01b03808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b60a082019390935260c001529291505056fea2646970667358221220dadaf18f022b7bef2fe175acc96185b547b86632a3998f004308e8807d47343c64736f6c63430008180033
0x6080604052600436106101d2575f3560e01c8063607d441d116100fd578063925cf23011610092578063f3fef3a311610062578063f3fef3a314610464578063fa09e63014610483578063fa461e3314610282578063fbe9e751146104a2575f80fd5b8063925cf2301461041d578063ca44113814610431578063d036772d146103d3578063eef21cd214610445575f80fd5b806375cea544116100cd57806375cea544146103b4578063840ccc5a146103d357806384cee21c146102825780638da5cb5b146103e7575f80fd5b8063607d441d1461036d5780636a5ac18f1461028257806371ef8e2214610381578063747293fb14610395575f80fd5b80632c58bfb81161017357806350431ce41161014357806350431ce4146102e8578063536fff6c146102fc57806357b2e35b1461033a5780635e42f10e1461034e575f80fd5b80632c58bfb8146102b557806331e2ba55146102825780633273db6c146102c9578063352e548414610282575f80fd5b8063189b54f0116101ae578063189b54f01461023c5780631b4e38211461026357806323a69e7514610282578063253cbe4c146102a1575f80fd5b80628b83b8146101dd5780630f64d95d146101fe57806313af40351461021d575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101fc6101f73660046137dc565b6104c1565b005b348015610209575f80fd5b506101fc610218366004613877565b6105bb565b348015610228575f80fd5b506101fc6102373660046138e9565b6106eb565b348015610247575f80fd5b50610250604081565b6040519081526020015b60405180910390f35b34801561026e575f80fd5b506101fc61027d366004613945565b6107a2565b34801561028d575f80fd5b506101fc61029c3660046139f3565b610896565b3480156102ac575f80fd5b50610250602081565b3480156102c0575f80fd5b50610250601081565b3480156102d4575f80fd5b506101fc6102e3366004613a6c565b6108a2565b3480156102f3575f80fd5b506101fc610a3b565b348015610307575f80fd5b5061032a6103163660046138e9565b60016020525f908152604090205460ff1681565b604051901515815260200161025a565b348015610345575f80fd5b50610250600281565b348015610359575f80fd5b506101fc610368366004613acb565b610ad9565b348015610378575f80fd5b50610250608081565b34801561038c575f80fd5b50610250600181565b3480156103a0575f80fd5b506101fc6103af3660046138e9565b610bc8565b3480156103bf575f80fd5b506101fc6103ce366004613b0a565b610c67565b3480156103de575f80fd5b50610250600881565b3480156103f2575f80fd5b505f54610405906001600160a01b031681565b6040516001600160a01b03909116815260200161025a565b348015610428575f80fd5b50610250600481565b34801561043c575f80fd5b5061025060ff81565b348015610450575f80fd5b506101fc61045f3660046138e9565b610dee565b34801561046f575f80fd5b506101fc61047e366004613b62565b610e60565b34801561048e575f80fd5b506101fc61049d3660046138e9565b610ea5565b3480156104ad575f80fd5b506101fc6104bc366004613acb565b610f46565b5f5a90503330146105195760405162461bcd60e51b815260206004820152600e60248201527f62617463682d696e7465726e616c00000000000000000000000000000000000060448201526064015b60405180910390fd5b6105b584843561052c6020870187613b8c565b604088013561054661054160208b018b613b8c565b61101f565b60405180608001604052808981526020018a81526020018b6060013581526020018b608001358152508a8060a0019061057f9190613bd1565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506110b892505050565b50505050565b5f5a9050814311156105e957604051632e7f455960e11b815243600482015260248101839052604401610510565b5f546001600160a01b031633148015906106125750335f9081526001602052604090205460ff16155b156106305760405163ea8e4eb560e01b815260040160405180910390fd5b5f869003610651576040516320a2d33d60e01b815260040160405180910390fd5b5f61065c8888611399565b9050805f03610687576040516322416f1f60e11b81525f600482015260248101869052604401610510565b858111156106925750845b6106e089828a8a5f6106a58e8e89611573565b60405180608001604052808a81526020016106be61161f565b815260208082018f905260409182018e905281515f81529081019091526110b8565b505050505050505050565b5f546001600160a01b03163314610715576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661073c5760405163d92e233d60e01b815260040160405180910390fd5b5f80546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a35f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f5a9050814311156107d057604051632e7f455960e11b815243600482015260248101839052604401610510565b5f546001600160a01b031633148015906107f95750335f9081526001602052604090205460ff16155b156108175760405163ea8e4eb560e01b815260040160405180910390fd5b6108898b8b8b8b8b6108298f8f61101f565b604051806080016040528089815260200161084261161f565b81526020018e81526020018d8152508b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506110b892505050565b5050505050505050505050565b6105b58484848461163c565b5f546001600160a01b031633148015906108cb5750335f9081526001602052604090205460ff16155b156108e95760405163ea8e4eb560e01b815260040160405180910390fd5b5f82900361090a576040516320a2d33d60e01b815260040160405180910390fd5b61092381610919600185613c3f565b1c60019081161490565b156109705760405162461bcd60e51b815260206004820152601c60248201527f636861696e6564206c61737420686f70206d7573742072657475726e000000006044820152606401610510565b6109ba6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f81526020015f81525090565b602081018390526001600160a01b03861660408201526060810185905260808101829052845f5b8260200151811015610a05576109fa86868386866116ad565b5091506001016109e1565b506040517f17080d7e00000000000000000000000000000000000000000000000000000000815260048101829052602401610510565b5f546001600160a01b03163314610a65576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f8114610aaf576040519150601f19603f3d011682016040523d82523d5f602084013e610ab4565b606091505b5050905080610ad6576040516312171d8360e31b815260040160405180910390fd5b50565b5f546001600160a01b03163314610b03576040516330cd747160e01b815260040160405180910390fd5b5f5b81811015610bc3575f60015f858585818110610b2357610b23613c52565b9050602002016020810190610b3891906138e9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055828282818110610b7157610b71613c52565b9050602002016020810190610b8691906138e9565b6001600160a01b03167f0491b0192bae7692618bfa4eff3f4942d2d8ec3300ef2e63d325b45e937c4ff160405160405180910390a2600101610b05565b505050565b5f546001600160a01b03163314610bf2576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610c195760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6acfd92212f0ec670af78f8ba2273e4a85ac17023475650c25be0440602bff2d9190a250565b80431115610c9157604051632e7f455960e11b815243600482015260248101829052604401610510565b5f546001600160a01b03163314801590610cba5750335f9081526001602052604090205460ff16155b15610cd85760405163ea8e4eb560e01b815260040160405180910390fd5b5f829003610cf9576040516320a2d33d60e01b815260040160405180910390fd5b5f610d0261161f565b90505f805b84811015610da15730628b83b888888885818110610d2757610d27613c52565b9050602002810190610d399190613c66565b8415610d45575f610d47565b865b6040518463ffffffff1660e01b8152600401610d6593929190613dda565b5f604051808303815f87803b158015610d7c575f80fd5b505af1925050508015610d8d575060015b15610d99578160010191505b600101610d07565b5060408051858152602081018390526001600160a01b038816917f5879520fa576ebfa42c1b99e9b65ac767409b54bb41eae59e15a331d3114be59910160405180910390a2505050505050565b5f546001600160a01b03163314610e18576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381165f81815260016020526040808220805460ff19169055517f0491b0192bae7692618bfa4eff3f4942d2d8ec3300ef2e63d325b45e937c4ff19190a250565b5f546001600160a01b03163314610e8a576040516330cd747160e01b815260040160405180910390fd5b5f54610ea19083906001600160a01b031683611900565b5050565b5f546001600160a01b03163314610ecf576040516330cd747160e01b815260040160405180910390fd5b5f546040516370a0823160e01b8152306004820152610ad69183916001600160a01b03918216918316906370a0823190602401602060405180830381865afa158015610f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f419190613ea7565b611900565b5f546001600160a01b03163314610f70576040516330cd747160e01b815260040160405180910390fd5b5f5b81811015610bc3575f838383818110610f8d57610f8d613c52565b9050602002016020810190610fa291906138e9565b90506001600160a01b038116610fcb5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517f6acfd92212f0ec670af78f8ba2273e4a85ac17023475650c25be0440602bff2d9190a250600101610f72565b60608167ffffffffffffffff81111561103a5761103a613c17565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090505f5b828110156110b15783838281811061108257611082613c52565b905060c0020160a0013582828151811061109e5761109e613c52565b6020908102919091010152600101611068565b5092915050565b5f8590036110d9576040516320a2d33d60e01b815260040160405180910390fd5b6110e884610919600188613c3f565b156111355760405162461bcd60e51b815260206004820152601c60248201527f636861696e6564206c61737420686f70206d7573742072657475726e000000006044820152606401610510565b61117f6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f81526020015f81525090565b6020810186905283611192600188613c3f565b815181106111a2576111a2613c52565b60209081029190910101518082526001600160a01b038a166040830152606082018990526080820186905260a0820185905288106112195780516040517fbc2c3512000000000000000000000000000000000000000000000000000000008152600481019190915260248101899052604401610510565b61122787878a868587611a2e565b6040516370a0823160e01b81523060048201525f906001600160a01b038b16906370a0823190602401602060405180830381865afa15801561126b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128f9190613ea7565b9050885f5b83602001518110156112d0575f826112af8c8c8589856116ad565b9094509150816112c6576112c68385838b8a611ab3565b5050600101611294565b505f816112dd8c85613c3f565b6112e79190613ebe565b90505f6112f687610fa0611b7c565b60408801516113059086613ebe565b61130f9190613ebe565b90508082101561133c576040516322416f1f60e11b81526004810183905260248101829052604401610510565b6001600160a01b038d167f57e239d2525ac69392c47e02c0379fa1ff49ac0fd3a3c6692a7fdcb2cadbfe838d6113728786613c3f565b6040805192835260208301919091520160405180910390a250505050505050505050505050565b5f60018082805b8581101561150b578686828181106113ba576113ba613c52565b905060c0020160600160208101906113d29190613ed1565b60ff161561144357808787838181106113ed576113ed613c52565b905060c0020160600160208101906114059190613ed1565b6040517f9070d6d4000000000000000000000000000000000000000000000000000000008152600481019290925260ff166024820152604401610510565b5f805f6114668a8a8681811061145b5761145b613c52565b905060c00201611bb5565b925092509250825f1480611478575081155b1561148c575f97505050505050505061156d565b866114978383613eea565b6114a19190613eea565b866114ae85612710613eea565b6114b89190613eea565b6114c28984613eea565b876114cf87612710613eea565b6114d99190613eea565b6114e39190613ebe565b919850965094506114f5878787611d38565b9198509650945050600190920191506113a09050565b508183111580611519575080155b15611529575f935050505061156d565b5f61153c6115378486613eea565b611d94565b9050828111611551575f94505050505061156d565b8161155c8483613c3f565b6115669190613f15565b9450505050505b92915050565b60608267ffffffffffffffff81111561158e5761158e613c17565b6040519080825280602002602001820160405280156115b7578160200160208202803683370190505b509050815f5b848110156116165781156115f0576115ec8686838181106115e0576115e0613c52565b905060c0020183611f16565b5091505b8183828151811061160357611603613c52565b60209081029190910101526001016115bd565b50509392505050565b5f61162b366010613eea565b61163790615208613ebe565b905090565b6002546001600160a01b0316331461166757604051636f61f64160e01b815260040160405180910390fd5b5f8061167583850185613b62565b915091505f8087136116875785611689565b865b90506116a483338385101561169e5783611900565b84611900565b50505050505050565b5f806116c28460800151861c60019081161490565b90505f80861180156116e3575060808501516116e390610919600189613c3f565b905081806116ee5750805b1561176d5787878781811061170557611705613c52565b905060c00201606001602081019061171d9190613ed1565b60ff161561176d5760405162461bcd60e51b815260206004820152601660248201527f636861696e656420686f70206d757374206265205632000000000000000000006044820152606401610510565b81156117f7578787611780886001613ebe565b81811061178f5761178f613c52565b905060c0020160600160208101906117a79190613ed1565b60ff16156117f75760405162461bcd60e51b815260206004820152601660248201527f636861696e656420686f70206d757374206265205632000000000000000000006044820152606401610510565b5f826118035730611835565b8888611810896001613ebe565b81811061181f5761181f613c52565b61183592602060c09092020190810191506138e9565b90505f88611844896001613ebe565b10611853578660400151611887565b89896118608a6001613ebe565b81811061186f5761186f613c52565b905060c00201602001602081019061188791906138e9565b90505f611894888a61215d565b9050848061189f5750835b6118cb576118c68b8b8b8181106118b8576118b8613c52565b905060c00201838984612198565b6118f0565b6118f08b8b8b8181106118e0576118e0613c52565b905060c002018886868686612202565b9550505050509550959350505050565b6040516001600160a01b038381166024830152604482018390525f9182918616907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161199d9190613f56565b5f604051808303815f865af19150503d805f81146119d6576040519150601f19603f3d011682016040523d82523d5f602084013e6119db565b606091505b5091509150811580611a095750805115801590611a09575080806020019051810190611a079190613f67565b155b15611a27576040516312171d8360e31b815260040160405180910390fd5b5050505050565b5f80611a3d88888887876124b2565b915091505f611a51878788606001516126d7565b9050808310156106e057845182905f90611a6b8685613c3f565b6040517ffd599b800000000000000000000000000000000000000000000000000000000081526004810194909452602484019290925260448301526064820152608401610510565b5f611abf8287866126fb565b9050845f03611b0a576040517fd646b618000000000000000000000000000000000000000000000000000000008152600481018790525f602482015260448101829052606401610510565b805f03611b175750611a27565b808514611b2e578151611b2b908683612797565b82525b5f611b5d836060015185610fa0611b4e886060015188602001518d6128d3565b611b589190613ebe565b6126d7565b905080835f015110156116a457868683855f015184611a6b9190613c3f565b5f815a8451611b8b9190613c3f565b8460200151611b9a9190613ebe565b611ba49190613ebe565b611bae903a613eea565b9392505050565b5f808080611bc660208601866138e9565b90505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611c06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2a9190613f9c565b5091509150826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f9190613fe8565b6001600160a01b0316611ca86040890160208a016138e9565b6001600160a01b031614611ccf57806001600160701b0316826001600160701b0316611ce4565b816001600160701b0316816001600160701b03165b9096509450612710611cfc6060890160408a01614003565b61ffff1610611d0d57612710611d2d565b611d1d6060880160408901614003565b611d2d9061ffff16612710613c3f565b959794965050505050565b5f805f80858711611d495785611d4b565b865b905080851115611d585750835b608081901c15611d87575f6080611d6e836128ff565b611d789190613c3f565b97881c9796871c969590951c94505b5094959394509192915050565b5f815f03611da357505f919050565b8160017001000000000000000000000000000000008210611dc95760809190911c9060401b5b680100000000000000008210611de45760409190911c9060201b5b6401000000008210611dfb5760209190911c9060101b5b620100008210611e105760109190911c9060081b5b6101008210611e245760089190911c9060041b5b60108210611e375760049190911c9060021b5b60048210611e435760011b5b6001818581611e5457611e54613f01565b048201901c90506001818581611e6c57611e6c613f01565b048201901c90506001818581611e8457611e84613f01565b048201901c90506001818581611e9c57611e9c613f01565b048201901c90506001818581611eb457611eb4613f01565b048201901c90506001818581611ecc57611ecc613f01565b048201901c90506001818581611ee457611ee4613f01565b048201901c90505f818581611efb57611efb613f01565b049050808210611f0b5780611f0d565b815b95945050505050565b5f8080612710611f2c60a0870160808801614003565b61ffff1610611f3b575f611f4b565b611f4b60a0860160808701614003565b61ffff1690505f8115611f7e57612710611f658382613c3f565b611f6f9087613eea565b611f799190613f15565b611f80565b845b90505f611f9060208801886138e9565b90505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff49190613f9c565b5091509150826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612035573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120599190613fe8565b6001600160a01b031661207260408b0160208c016138e9565b6001600160a01b03161495505f808761209e57826001600160701b0316846001600160701b03166120b3565b836001600160701b0316836001600160701b03165b91509150815f14806120c3575080155b156120d7575f985050505050505050612156565b5f6127106120eb60608e0160408f01614003565b61ffff16106120fa575f61210a565b61210a60608d0160408e01614003565b61ffff1690505f61211d82612710613c3f565b6121279089613eea565b905061214a81848161213b88612710613eea565b6121459190613ebe565b612797565b9a505050505050505050505b9250929050565b5f818360c00151901c6001165f0361217657505f61156d565b818360e00151901c60011660011461218f576002611bae565b50600192915050565b5f6121a96080860160608701613ed1565b60ff166001036121c4576121bd85846129ee565b90506121fa565b6121d46080860160608701613ed1565b60ff166002036121e9576121bd858585612d99565b6121f785845f308887612202565b90505b949350505050565b5f8061221160208901896138e9565b90505f60ff841615612229578360ff166001146122ad565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122899190613fe8565b6001600160a01b03166122a260408b0160208c016138e9565b6001600160a01b0316145b90505f6122bc8a8a8a85613212565b90505f80836122cc57825f6122cf565b5f835b9092509050306001600160a01b038a1603612434576040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015612328573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234c9190613ea7565b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f9061238d90869086908f9060248101614047565b5f604051808303815f87803b1580156123a4575f80fd5b505af11580156123b6573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038c1691506370a0823190602401602060405180830381865afa1580156123fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124229190613ea7565b61242c9190613c3f565b9650506124a3565b604080515f8152602081019182905263022c0d9f60e01b9091526001600160a01b0386169063022c0d9f9061247290859085908e9060248101614047565b5f604051808303815f87803b158015612489575f80fd5b505af115801561249b573d5f803e3d5ffd5b505050508295505b50505050509695505050505050565b5f806124e16040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b845181526020810187905260608101869052608081018690525f5b878110156126c0575f89898381811061251757612517613c52565b905060c0020160a0013590505f815f141580156125375750608084015115155b80156125465750606084015115155b6125505781612563565b6125638285606001518660800151612797565b84519091508b8b8581811061257a5761257a613c52565b905060c0020160600160208101906125929190613ed1565b60ff161580156125a55750606085015115155b156125e2576125d68c8c868181106125bf576125bf613c52565b905060c0020185876060015185895f01518e6133fa565b60608701528552612675565b8b8b858181106125f4576125f4613c52565b905060c00201606001602081019061260c9190613ed1565b60ff1660010361266d5761266a8c8c8681811061262b5761262b613c52565b905060c002018951861061263f575f612663565b89868151811061265157612651613c52565b60200260200101516001600160a01b03165b8751613476565b85525b606085018290525b8451811180156126935750604085015185516126919083613c3f565b115b156126b15784516126a49082613c3f565b6040860152602085018490525b505060808301526001016124fc565b508051602090910151909890975095505050505050565b5f6126e28383611b7c565b60408401516126f19086613ebe565b6121fa9190613ebe565b5f808460a00151848151811061271357612713613c52565b60200260200101519050805f0361272d575f915050611bae565b5f84156127615760a0860151612744600187613c3f565b8151811061275457612754613c52565b6020026020010151612767565b85606001515b905080158061277557508084145b1561278257509050611bae565b61278d828583612797565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f0361281d575f84116128045760405162461bcd60e51b815260206004820152600860248201527f6d756c4469763a300000000000000000000000000000000000000000000000006044820152606401610510565b83828161281357612813613f01565b0492505050611bae565b80841161286c5760405162461bcd60e51b815260206004820152600960248201527f6d756c4469763a6f6600000000000000000000000000000000000000000000006044820152606401610510565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f82826128e1600183613c3f565b6128eb9190613c3f565b6128f59086613eea565b6121fa9190613f15565b5f608082901c1561291d57608091821c9161291a9082613ebe565b90505b604082901c1561293a57604091821c916129379082613ebe565b90505b602082901c1561295757602091821c916129549082613ebe565b90505b601082901c1561297457601091821c916129719082613ebe565b90505b600882901c1561299157600891821c9161298e9082613ebe565b90505b600482901c156129ae57600491821c916129ab9082613ebe565b90505b600282901c156129cb57600291821c916129c89082613ebe565b90505b600182901c156129e3576129e0600182613ebe565b90505b61156d816001613ebe565b5f806129fd60208501856138e9565b90505f816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a609190613fe8565b90505f6001600160a01b038216612a7d60408801602089016138e9565b6001600160a01b03161490505f81612a955782612af5565b836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612af59190613fe8565b90505f82612b2157612b1c600173fffd8963efd1fc6a506488495d951d5263988d26614074565b612b31565b612b316401000276a36001614094565b90505f612b4460a08a0160808b01614003565b61ffff1615612b8957612710612b6060a08b0160808c01614003565b612b6c906127106140b4565b612b7a9061ffff168a613eea565b612b849190613f15565b612b8b565b875b90506002811115612ba457612ba1600282613c3f565b90505b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015612be8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c0c9190613ea7565b9050612c1b60208b018b6138e9565b60025f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550866001600160a01b031663128acb08308785878f6020016020810190612c6691906138e9565b8f604051602001612c8c9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612cbb9594939291906140cf565b60408051808303815f875af1158015612cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfa9190614113565b50506002805473ffffffffffffffffffffffffffffffffffffffff191690556040516370a0823160e01b815230600482015281906001600160a01b038616906370a0823190602401602060405180830381865afa158015612d5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d819190613ea7565b612d8b9190613c3f565b9a9950505050505050505050565b5f80612da860208601866138e9565b6001600160a01b0316638d928af86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612de3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e079190613fe8565b9050805f612e1860208801886138e9565b6001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e779190613ea7565b6040517ff94d4668000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b0384169063f94d4668906024015f60405180830381865afa158015612ed7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612efe91908101906141f5565b505090505f805f5b8351811015612f9457612f1f60408c0160208d016138e9565b6001600160a01b0316848281518110612f3a57612f3a613c52565b60200260200101516001600160a01b031603612f5557600192505b896001600160a01b0316848281518110612f7157612f71613c52565b60200260200101516001600160a01b031603612f8c57600191505b600101612f06565b50811580612fa0575080155b80612fcb57506001600160a01b038916612fc060408c0160208d016138e9565b6001600160a01b0316145b15612fe957604051636f61f64160e01b815260040160405180910390fd5b613003612ffc60408c0160208d016138e9565b878a6135dd565b6040516370a0823160e01b81523060048201525f906001600160a01b038b16906370a0823190602401602060405180830381865afa158015613047573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306b9190613ea7565b9050856001600160a01b03166352bbbe296040518060c001604052808881526020015f600181111561309f5761309f6142bc565b81526020018e60200160208101906130b791906138e9565b6001600160a01b0390811682528e166020820152604081018d90526060015f6040519080825280601f01601f191660200182016040528015613100576020820181803683370190505b50905260408051608081018252308082525f602083018190529282015260608101829052906131314261012c613ebe565b6040518563ffffffff1660e01b815260040161315094939291906142d0565b6020604051808303815f875af115801561316c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131909190613ea7565b506040516370a0823160e01b815230600482015281906001600160a01b038c16906370a0823190602401602060405180830381865afa1580156131d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f99190613ea7565b6132039190613c3f565b9b9a5050505050505050505050565b5f8261323e5761323e61322b60408701602088016138e9565b61323860208801886138e9565b86611900565b5f8061324d60208801886138e9565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613288573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ac9190613f9c565b50915091505f80856132d157826001600160701b0316846001600160701b03166132e6565b836001600160701b0316836001600160701b03165b90925090505f826132fd60408c0160208d016138e9565b6001600160a01b03166370a0823161331860208e018e6138e9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613372573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133969190613ea7565b6133a09190613c3f565b90505f6133b360608c0160408d01614003565b6133bf906127106140b4565b6133cd9061ffff1683613eea565b9050806133dc85612710613eea565b6133e69190613ebe565b6133f08483613eea565b6132039190613f15565b5f805f806134088a89611f16565b60c08701805160018d1b1790529092509050801561342e5760e08501805160018b1b1790525b815f03613442575f8093509350505061346b565b86158015906134515750868214155b1561346457613461868389612797565b95505b5084925090505b965096945050505050565b5f821580613486575060a0840135155b8061348f575081155b1561349b575080611bae565b5f806134b26134ad60208801886138e9565b613628565b91509150806134c5578392505050611bae565b5f6134d360208801886138e9565b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135329190613fe8565b6001600160a01b031661354b6040890160208a016138e9565b6001600160a01b03161490505f8161356557868411613569565b8684105b90508061357c5785945050505050611bae565b5f8785106135935761358e8886613c3f565b61359d565b61359d8589613c3f565b90505f6135b5886135af846002613eea565b8b612797565b9050878110156135ce576135c98189613c3f565b612d8b565b5f9a9950505050505050505050565b6040516001600160a01b038381166024830152604482018390525f9182918616907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611947565b60408051600481526024810182526020810180516001600160e01b03167f3850c7bd0000000000000000000000000000000000000000000000000000000017905290515f918291829182916001600160a01b0387169161368791613f56565b5f60405180830381855afa9150503d805f81146136bf576040519150601f19603f3d011682016040523d82523d5f602084013e6136c4565b606091505b50915091508115806136d7575060208151105b156137775760408051600481526024810182526020810180516001600160e01b03167fe76c01e40000000000000000000000000000000000000000000000000000000017905290516001600160a01b0387169161373391613f56565b5f60405180830381855afa9150503d805f811461376b576040519150601f19603f3d011682016040523d82523d5f602084013e613770565b606091505b5090925090505b811580613785575060208151105b1561379657505f9485945092505050565b60208101516137bb600174010000000000000000000000000000000000000000613c3f565b1695600195509350505050565b6001600160a01b0381168114610ad6575f80fd5b5f805f606084860312156137ee575f80fd5b83356137f9816137c8565b9250602084013567ffffffffffffffff811115613814575f80fd5b840160c08187031215613825575f80fd5b929592945050506040919091013590565b5f8083601f840112613846575f80fd5b50813567ffffffffffffffff81111561385d575f80fd5b60208301915083602060c083028501011115612156575f80fd5b5f805f805f805f60c0888a03121561388d575f80fd5b8735613898816137c8565b9650602088013567ffffffffffffffff8111156138b3575f80fd5b6138bf8a828b01613836565b989b909a509798604081013598606082013598506080820135975060a09091013595509350505050565b5f602082840312156138f9575f80fd5b8135611bae816137c8565b5f8083601f840112613914575f80fd5b50813567ffffffffffffffff81111561392b575f80fd5b6020830191508360208260051b8501011115612156575f80fd5b5f805f805f805f805f806101008b8d03121561395f575f80fd5b8a3561396a816137c8565b995060208b0135985060408b013567ffffffffffffffff8082111561398d575f80fd5b6139998e838f01613836565b909a50985060608d0135975060808d0135965060a08d0135955060c08d01359150808211156139c6575f80fd5b506139d38d828e01613904565b9150809450508092505060e08b013590509295989b9194979a5092959850565b5f805f8060608587031215613a06575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115613a2b575f80fd5b818701915087601f830112613a3e575f80fd5b813581811115613a4c575f80fd5b886020828501011115613a5d575f80fd5b95989497505060200194505050565b5f805f805f60808688031215613a80575f80fd5b8535613a8b816137c8565b945060208601359350604086013567ffffffffffffffff811115613aad575f80fd5b613ab988828901613836565b96999598509660600135949350505050565b5f8060208385031215613adc575f80fd5b823567ffffffffffffffff811115613af2575f80fd5b613afe85828601613904565b90969095509350505050565b5f805f8060608587031215613b1d575f80fd5b8435613b28816137c8565b9350602085013567ffffffffffffffff811115613b43575f80fd5b613b4f87828801613904565b9598909750949560400135949350505050565b5f8060408385031215613b73575f80fd5b8235613b7e816137c8565b946020939093013593505050565b5f808335601e19843603018112613ba1575f80fd5b83018035915067ffffffffffffffff821115613bbb575f80fd5b602001915060c081023603821315612156575f80fd5b5f808335601e19843603018112613be6575f80fd5b83018035915067ffffffffffffffff821115613c00575f80fd5b6020019150600581901b3603821315612156575f80fd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561156d5761156d613c2b565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613c7a575f80fd5b9190910192915050565b803561ffff81168114613c95575f80fd5b919050565b803560ff81168114613c95575f80fd5b8183525f60208085019450825f5b85811015613d4e578135613ccb816137c8565b6001600160a01b0390811688528284013590613ce6826137c8565b16878401526040613cf8838201613c84565b61ffff808216838b01526060925060ff613d13848701613c9a565b16838b01526080925080613d28848701613c84565b16928a0192909252505060a0828101359088015260c09687019690910190600101613cb8565b509495945050505050565b5f808335601e19843603018112613d6e575f80fd5b830160208101925035905067ffffffffffffffff811115613d8d575f80fd5b8060051b3603821315612156575f80fd5b8183525f60208085019450825f5b85811015613d4e578135613dbf816137c8565b6001600160a01b031687529582019590820190600101613dac565b6001600160a01b038416815260606020820152823560608201525f6020840135601e19853603018112613e0b575f80fd5b840160208101903567ffffffffffffffff811115613e27575f80fd5b60c081023603821315613e38575f80fd5b60c06080850152613e4e61012085018284613caa565b915050604085013560a0840152606085013560c0840152608085013560e0840152613e7c60a0860186613d59565b848303605f1901610100860152613e94838284613d9e565b9350505050826040830152949350505050565b5f60208284031215613eb7575f80fd5b5051919050565b8082018082111561156d5761156d613c2b565b5f60208284031215613ee1575f80fd5b611bae82613c9a565b808202811582820484141761156d5761156d613c2b565b634e487b7160e01b5f52601260045260245ffd5b5f82613f2f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5b83811015613f4e578181015183820152602001613f36565b50505f910152565b5f8251613c7a818460208701613f34565b5f60208284031215613f77575f80fd5b81518015158114611bae575f80fd5b80516001600160701b0381168114613c95575f80fd5b5f805f60608486031215613fae575f80fd5b613fb784613f86565b9250613fc560208501613f86565b9150604084015163ffffffff81168114613fdd575f80fd5b809150509250925092565b5f60208284031215613ff8575f80fd5b8151611bae816137c8565b5f60208284031215614013575f80fd5b611bae82613c84565b5f8151808452614033816020860160208601613f34565b601f01601f19169290920160200192915050565b8481528360208201526001600160a01b0383166040820152608060608201525f61278d608083018461401c565b6001600160a01b038281168282160390808211156110b1576110b1613c2b565b6001600160a01b038181168382160190808211156110b1576110b1613c2b565b61ffff8281168282160390808211156110b1576110b1613c2b565b5f6001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261410860a083018461401c565b979650505050505050565b5f8060408385031215614124575f80fd5b505080516020909101519092909150565b604051601f8201601f1916810167ffffffffffffffff8111828210171561415e5761415e613c17565b604052919050565b5f67ffffffffffffffff82111561417f5761417f613c17565b5060051b60200190565b5f82601f830112614198575f80fd5b815160206141ad6141a883614166565b614135565b8083825260208201915060208460051b8701019350868411156141ce575f80fd5b602086015b848110156141ea57805183529183019183016141d3565b509695505050505050565b5f805f60608486031215614207575f80fd5b835167ffffffffffffffff8082111561421e575f80fd5b818601915086601f830112614231575f80fd5b815160206142416141a883614166565b82815260059290921b8401810191818101908a84111561425f575f80fd5b948201945b83861015614286578551614277816137c8565b82529482019490820190614264565b9189015191975090935050508082111561429e575f80fd5b506142ab86828701614189565b925050604084015190509250925092565b634e487b7160e01b5f52602160045260245ffd5b60e08152845160e08201525f6020860151600281106142fd57634e487b7160e01b5f52602160045260245ffd5b61010083015260408601516001600160a01b031661012083015260608601516143326101408401826001600160a01b03169052565b50608086015161016083015260a086015160c06101808401526143596101a084018261401c565b91505061439b60208301866001600160a01b03808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b60a082019390935260c001529291505056fea2646970667358221220dadaf18f022b7bef2fe175acc96185b547b86632a3998f004308e8807d47343c64736f6c63430008180033