0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b620019711760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6152a0806200015c6000396000f3fe6080604052600436106100b15760003560e01c8063045c08d5146100bd5780631420b9c6146100f35780632c76d7a61461011557806342860d4b1461013557806359856d56146101555780637c295dfa1461016857806380009630146101f957806383f1d68114610219578063848c48da14610239578063a6c01f961461024c578063b80344241461026c578063b82c4dc1146102a2578063e45e6f30146102c2578063f2f4eb26146102e257600080fd5b366100b857005b600080fd5b3480156100c957600080fd5b506002546100dd906001600160a01b031681565b6040516100ea9190613935565b60405180910390f35b3480156100ff57600080fd5b5061011361010e36600461398d565b610308565b005b34801561012157600080fd5b506001546100dd906001600160a01b031681565b34801561014157600080fd5b50610113610150366004613a78565b6103b5565b610113610163366004613c7b565b610545565b34801561017457600080fd5b506101c6610183366004613e00565b603360209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391831692918216911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016100ea565b34801561020557600080fd5b50610113610214366004613e39565b61080d565b34801561022557600080fd5b50610113610234366004613e56565b610941565b610113610247366004613e8b565b610a47565b34801561025857600080fd5b50610113610267366004613f1f565b6115ef565b34801561027857600080fd5b506100dd610287366004613e39565b6032602052600090815260409020546001600160a01b031681565b3480156102ae57600080fd5b506101136102bd36600461403e565b611698565b3480156102ce57600080fd5b506101136102dd366004613e00565b6117e3565b3480156102ee57600080fd5b506000546100dd906201000090046001600160a01b031681565b60005460405163521d4de960e01b8152620100009091046001600160a01b03169063521d4de99061033d903390600401613935565b602060405180830381865afa15801561035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037e91906140b8565b61039b57604051632678482f60e21b815260040160405180910390fd5b6103ab8888888888888888611980565b5050505050505050565b600054610100900460ff16158080156103d55750600054600160ff909116105b806103f657506103e430611971565b1580156103f6575060005460ff166001145b61045e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610481576000805461ff0019166101001790555b6001600160a01b0384166104a85760405163d92e233d60e01b815260040160405180910390fd5b600080546001600160a01b03808716620100000262010000600160b01b031990921691909117909155600180548583166001600160a01b0319918216179091556002805492851692909116919091179055801561053f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b855160005b818110156106a857878181518110610564576105646140d5565b6020026020010151604001511561069357878181518110610587576105876140d5565b6020026020010151600001516001600160a01b031663f51cc7dd8983815181106105b3576105b36140d5565b6020026020010151602001513060018c86815181106105d4576105d46140d5565b6020026020010151606001518d87815181106105f2576105f26140d5565b6020026020010151608001518e8881518110610610576106106140d5565b602002602001015160a001518f898151811061062e5761062e6140d5565b602002602001015160c001516040518863ffffffff1660e01b815260040161065c97969594939291906140eb565b600060405180830381600087803b15801561067657600080fd5b505af115801561068a573d6000803e3d6000fd5b50505050610698565b6106a8565b6106a181614142565b905061054a565b506106b68686868686610a47565b60005b818110156103ab578781815181106106d3576106d36140d5565b6020026020010151604001516107fd578781815181106106f5576106f56140d5565b6020026020010151600001516001600160a01b031663f51cc7dd898381518110610721576107216140d5565b6020026020010151602001513060008c8681518110610742576107426140d5565b6020026020010151606001518d8781518110610760576107606140d5565b6020026020010151608001518e888151811061077e5761077e6140d5565b602002602001015160a001518f898151811061079c5761079c6140d5565b602002602001015160c001516040518863ffffffff1660e01b81526004016107ca97969594939291906140eb565b600060405180830381600087803b1580156107e457600080fd5b505af11580156107f8573d6000803e3d6000fd5b505050505b61080681614142565b90506106b9565b600054604051631c86b03760e31b8152620100009091046001600160a01b03169063e43581b890610842903390600401613935565b602060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088391906140b8565b15806108f95750604051631c86b03760e31b81526001600160a01b0382169063e43581b8906108b6903390600401613935565b602060405180830381865afa1580156108d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f791906140b8565b155b1561091757604051633b8d9d7560e21b815260040160405180910390fd5b600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60005460405163521d4de960e01b8152620100009091046001600160a01b03169063521d4de990610976903390600401613935565b602060405180830381865afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b791906140b8565b6109d457604051632678482f60e21b815260040160405180910390fd5b6001600160a01b0382166109fb5760405163d92e233d60e01b815260040160405180910390fd5b8060ff16600003610a2757600180546001600160a01b0384166001600160a01b03199091161790555050565b600280546001600160a01b0319166001600160a01b0384161790555b5050565b845160005b81811015610bcd57868181518110610a6657610a666140d5565b6020026020010151600001516001600160a01b031663d505accf888381518110610a9257610a926140d5565b602002602001015160200151308a8581518110610ab157610ab16140d5565b6020026020010151604001518b8681518110610acf57610acf6140d5565b6020026020010151606001518c8781518110610aed57610aed6140d5565b6020026020010151608001518d8881518110610b0b57610b0b6140d5565b602002602001015160a001518e8981518110610b2957610b296140d5565b602090810291909101015160c001516040516001600160e01b031960e08a901b1681526001600160a01b0397881660048201529690951660248701526044860193909352606485019190915260ff16608484015260a483015260c482015260e401600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b5050505080610bc690614142565b9050610a4c565b508360005b818110156103ab576000878783818110610bee57610bee6140d5565b9050602002016020810190610c039190614171565b601a811115610c1457610c1461415b565b03610ceb576000806000878785818110610c3057610c306140d5565b9050602002810190610c429190614192565b810190610c4f91906141d8565b9250925092506000198103610cce576040516370a0823160e01b81526001600160a01b038416906370a0823190610c8a903390600401613935565b602060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190614219565b90505b610ce36001600160a01b038416338484611aab565b5050506115df565b6001878783818110610cff57610cff6140d5565b9050602002016020810190610d149190614171565b601a811115610d2557610d2561415b565b03610d3857610d32611b16565b506115df565b6002878783818110610d4c57610d4c6140d5565b9050602002016020810190610d619190614171565b601a811115610d7257610d7261415b565b03610db957600080868684818110610d8c57610d8c6140d5565b9050602002810190610d9e9190614192565b810190610dab9190614232565b91509150610ce38282611b79565b6003878783818110610dcd57610dcd6140d5565b9050602002016020810190610de29190614171565b601a811115610df357610df361415b565b03610e3f576000806000878785818110610e0f57610e0f6140d5565b9050602002810190610e219190614192565b810190610e2e9190614257565b925092509250610ce3838383611c78565b6004878783818110610e5357610e536140d5565b9050602002016020810190610e689190614171565b601a811115610e7957610e7961415b565b03610e8f57478015610d3257610d323382611d0e565b6005878783818110610ea357610ea36140d5565b9050602002016020810190610eb89190614171565b601a811115610ec957610ec961415b565b03610f2357600080600080888886818110610ee657610ee66140d5565b9050602002810190610ef89190614192565b810190610f0591906142fd565b9350935093509350610f1984848484611d3f565b50505050506115df565b6006878783818110610f3757610f376140d5565b9050602002016020810190610f4c9190614171565b601a811115610f5d57610f5d61415b565b03610fb2576000806000878785818110610f7957610f796140d5565b9050602002810190610f8b9190614192565b810190610f98919061435f565b925092509250610fa9838383611e83565b505050506115df565b6007878783818110610fc657610fc66140d5565b9050602002016020810190610fdb9190614171565b601a811115610fec57610fec61415b565b0361103a57600080868684818110611006576110066140d5565b90506020028101906110189190614192565b8101906110259190614426565b915091506110338282611f39565b50506115df565b600887878381811061104e5761104e6140d5565b90506020020160208101906110639190614171565b601a8111156110745761107461415b565b036110c457600080600080888886818110611091576110916140d5565b90506020028101906110a39190614192565b8101906110b09190614475565b9350935093509350610fa984848484611fce565b60098787838181106110d8576110d86140d5565b90506020020160208101906110ed9190614171565b601a8111156110fe576110fe61415b565b036111835760008060008060008060008b8b89818110611120576111206140d5565b90506020028101906111329190614192565b81019061113f91906145b0565b96509650965096509650965096506111598383888a612034565b915061116887876000196124f3565b6111768684848888866125ba565b50505050505050506115df565b600a878783818110611197576111976140d5565b90506020020160208101906111ac9190614171565b601a8111156111bd576111bd61415b565b036112275760008060008060008060008b8b898181106111df576111df6140d5565b90506020028101906111f19190614192565b8101906111fe919061467e565b965096509650965096509650965061121b8787878787878761265e565b505050505050506115df565b600b87878381811061123b5761123b6140d5565b90506020020160208101906112509190614171565b601a8111156112615761126161415b565b036112cd576000806000806000898987818110611280576112806140d5565b90506020028101906112929190614192565b81019061129f9190614709565b945094509450945094506112b685856000196124f3565b6112c2848484846126cf565b5050505050506115df565b600c8787838181106112e1576112e16140d5565b90506020020160208101906112f69190614171565b601a8111156113075761130761415b565b03611368576000806000806000898987818110611326576113266140d5565b90506020028101906113389190614192565b8101906113459190614709565b9450945094509450945061135c85856000196124f3565b6112c28484848461274e565b600d87878381811061137c5761137c6140d5565b90506020020160208101906113919190614171565b601a8111156113a2576113a261415b565b036113f2576000806000808888868181106113bf576113bf6140d5565b90506020028101906113d19190614192565b8101906113de9190614764565b9350935093509350610f19848484846127cd565b600e878783818110611406576114066140d5565b905060200201602081019061141b9190614171565b601a81111561142c5761142c61415b565b0361147c57600080600080888886818110611449576114496140d5565b905060200281019061145b9190614192565b8101906114689190614764565b9350935093509350610f1984848484612802565b600f878783818110611490576114906140d5565b90506020020160208101906114a59190614171565b601a8111156114b6576114b661415b565b03611506576000806000808888868181106114d3576114d36140d5565b90506020028101906114e59190614192565b8101906114f29190614764565b9350935093509350610f1984848484612838565b601087878381811061151a5761151a6140d5565b905060200201602081019061152f9190614171565b601a8111156115405761154061415b565b0361158c57600080600087878581811061155c5761155c6140d5565b905060200281019061156e9190614192565b81019061157b91906147ac565b925092509250610fa983838361286d565b6115df8787838181106115a1576115a16140d5565b90506020020160208101906115b69190614171565b8686848181106115c8576115c86140d5565b90506020028101906115da9190614192565b6128eb565b6115e881614142565b9050610bd2565b6115fa8c8c8c6103b5565b611618611605612b95565b6001600160a01b038b1690600019612bad565b731a7e4e63778b4f12a199c062f3efdd288afcbce860005260326020527f4c3b7032ddf9b5c5574c4f57351deb5caa0122f2fd08929d224774d778d4e20d80546001600160a01b031916735addc89785d75c86ab939e9e15bfbbb7fc086a8717905561168a8888888888888888611980565b505050505050505050505050565b60005460405163521d4de960e01b8152620100009091046001600160a01b03169063521d4de9906116cd903390600401613935565b602060405180830381865afa1580156116ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170e91906140b8565b61172b57604051632678482f60e21b815260040160405180910390fd5b84838114158061173b5750808214155b15611759576040516346282e8d60e01b815260040160405180910390fd5b60005b818110156103ab576117d3888883818110611779576117796140d5565b905060200201602081019061178e9190613e39565b8787848181106117a0576117a06140d5565b90506020020160208101906117b59190613e39565b8686858181106117c7576117c76140d5565b905060200201356124f3565b6117dc81614142565b905061175c565b60005460405163521d4de960e01b8152620100009091046001600160a01b03169063521d4de990611818903390600401613935565b602060405180830381865afa158015611835573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185991906140b8565b61187657604051632678482f60e21b815260040160405180910390fd5b6001600160a01b03821615806118a557506001600160a01b038281166000908152603260205260409020541615155b806119255750816001600160a01b0316816001600160a01b031663ee565a636040518163ffffffff1660e01b81526004016020604051808303816000875af11580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119199190614803565b6001600160a01b031614155b1561194357604051635435b28960e11b815260040160405180910390fd5b6001600160a01b03918216600090815260326020526040902080546001600160a01b03191691909216179055565b6001600160a01b03163b151590565b8685811415806119905750838114155b8061199b5750818114155b156119b9576040516346282e8d60e01b815260040160405180910390fd5b60005b81811015611a9f576000603260008c8c858181106119dc576119dc6140d5565b90506020020160208101906119f19190613e39565b6001600160a01b039081168252602082019290925260400160002054169050611a8e818a8a85818110611a2657611a266140d5565b9050602002016020810190611a3b9190613e39565b898986818110611a4d57611a4d6140d5565b9050602002016020810190611a629190613e39565b888887818110611a7457611a746140d5565b9050602002016020810190611a899190614820565b612c4a565b50611a9881614142565b90506119bc565b50505050505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261053f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612ebd565b6000611b20612f8f565b6001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b505050505034905090565b6000611b83612f8f565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611bae9190613935565b602060405180830381865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190614219565b9050611bfb8184612fa7565b8015611c7257611c09612f8f565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401611c3691815260200190565b600060405180830381600087803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b50505050611c728282611d0e565b92915050565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190611ca7903090600401613935565b602060405180830381865afa158015611cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce89190614219565b9050611cf48184612fa7565b801561053f5761053f6001600160a01b0385168383612fc8565b600080600080600085875af1905080611d3a576040516312171d8360e31b815260040160405180910390fd5b505050565b600154604051636eb1769f60e11b81526000916001600160a01b0390811691839188169063dd62ed3e90611d79903090869060040161483d565b602060405180830381865afa158015611d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dba9190614219565b905085811015611de557611de582611dd483600019614857565b6001600160a01b038a169190612bad565b6040805160a08101825285815230602082015242818301526060810188905260808101879052905163c04b8d5960e01b81526001600160a01b0384169163c04b8d5991611e3591906004016148ba565b6020604051808303816000875af1158015611e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e789190614219565b979650505050505050565b6002546000906001600160a01b0316611e9f85826000196124f3565b600080826001600160a01b031685604051611eba9190614912565b6000604051808303816000865af19150503d8060008114611ef7576040519150601f19603f3d011682016040523d82523d6000602084013e611efc565b606091505b509150915081611f0f57611f0f81612fe7565b80806020019051810190611f239190614219565b9350611f2f8487612fa7565b5050509392505050565b805160005b8181101561053f57828181518110611f5857611f586140d5565b60200260200101516001600160a01b03166384e9bd7e856040518263ffffffff1660e01b8152600401611f8b9190613935565b600060405180830381600087803b158015611fa557600080fd5b505af1158015611fb9573d6000803e3d6000fd5b5050505080611fc790614142565b9050611f3e565b6040516383df674760e01b8152600481018490526001600160a01b03858116602483015282151560448301528316906383df674790606401600060405180830381600087803b15801561202057600080fd5b505af11580156103ab573d6000803e3d6000fd5b83516060906000816001600160401b0381111561205357612053613ac3565b60405190808252806020026020018201604052801561207c578160200160208202803683370190505b5090506000806000805b858110156124e1576000808c83815181106120a3576120a36140d5565b602002602001015160078111156120bc576120bc61415b565b036120cb5760019450506124d1565b60028c83815181106120df576120df6140d5565b602002602001015160078111156120f8576120f861415b565b036121ee5760008b8381518110612111576121116140d5565b602002602001015180602001905181019061212c919061492e565b9092509050600181016121e7576040516370a0823160e01b815282906001600160a01b038c16906370a0823190612167903090600401613935565b602060405180830381865afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a89190614219565b6040805160208101939093528201526060016040516020818303038152906040528c84815181106121db576121db6140d5565b60200260200101819052505b50506124d1565b60038c8381518110612202576122026140d5565b6020026020010151600781111561221b5761221b61415b565b1480612251575060058c8381518110612236576122366140d5565b6020026020010151600781111561224f5761224f61415b565b145b1561228b578a8281518110612268576122686140d5565b6020026020010151806020019051810190612283919061492e565b509050612362565b60018c838151811061229f5761229f6140d5565b602002602001015160078111156122b8576122b861415b565b036122f1578a82815181106122cf576122cf6140d5565b60200260200101518060200190518101906122ea9190614219565b9050612362565b60068c8381518110612305576123056140d5565b6020026020010151600781111561231e5761231e61415b565b0361235c578a8281518110612335576123356140d5565b60200260200101518060200190518101906123509190614952565b50919250612362915050565b506124d1565b806000036123e657841561237657506124d1565b836000036123e357896001600160a01b0316633c2e941b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e09190614219565b93505b50825b60005b838110156124175781878281518110612404576124046140d5565b50505061241081614142565b90506123e9565b5060405163430c208160e01b81526001600160a01b038b169063430c2081906124469033908590600401614990565b602060405180830381865afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248791906140b8565b6124a45760405163390cdd9b60e21b815260040160405180910390fd5b808684815181106124b7576124b76140d5565b60209081029190910101526124cd6001846149a9565b9250505b6124da81614142565b9050612086565b5088955050505050505b949350505050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90612524903090879060040161483d565b602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614219565b9050818110156125935761258e8361257d8385614857565b6001600160a01b0387169190612bad565b61053f565b8181111561053f5761053f836125a98484614857565b6001600160a01b038716919061300f565b6125e56040518060800160405280600081526020016000815260200160008152602001600081525090565b604051631bd1f8d360e31b81526001600160a01b0388169063de8fc6989061261b908990899033908a908a908a90600401614a11565b6080604051808303816000875af115801561263a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e789190614ab8565b60405163a5d4096b60e01b81526001600160a01b0388169063a5d4096b9061269490899089908990899089908990600401614b1d565b600060405180830381600087803b1580156126ae57600080fd5b505af11580156126c2573d6000803e3d6000fd5b5050505050505050505050565b60006124eb82866001600160a01b03166394bf804d87876040518363ffffffff1660e01b8152600401612703929190614b6b565b6020604051808303816000875af1158015612722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127469190614219565b925082612fa7565b60006124eb856001600160a01b0316636e553f6586866040518363ffffffff1660e01b8152600401612781929190614b6b565b6020604051808303816000875af11580156127a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c49190614219565b91508183612fa7565b60006124eb856001600160a01b031663ba0876528686336040518463ffffffff1660e01b815260040161278193929190614b82565b60006124eb82866001600160a01b031663b460af948787336040518463ffffffff1660e01b815260040161270393929190614b82565b60006124eb856001600160a01b031663fbcc01ae8686336040518463ffffffff1660e01b815260040161278193929190614b82565b6040516329a6132760e01b81526000906001600160a01b038516906329a613279061289e9086908690600401614ba1565b6020604051808303816000875af11580156128bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e19190614219565b90505b9392505050565b601a83601a8111156128ff576128ff61415b565b0361293c576000808080808061291787890189614c58565b95509550955095509550955061293186868686868661310b565b505050505050505050565b601383601a8111156129505761295061415b565b0361297e576000808061296584860186614d24565b9250925092506129768383836132e2565b505050505050565b601983601a8111156129925761299261415b565b036129bb576000806129a683850185614d64565b915091506129b482826133d9565b5050505050565b601683601a8111156129cf576129cf61415b565b03612a0157600080808080806129e787890189614d90565b95509550955095509550955061293186868686868661343c565b601483601a811115612a1557612a1561415b565b03612abb57600080808080612a2c86880188614e09565b945094509450945094506000198503612aaf576040516370a0823160e01b81526001600160a01b038216906370a0823190612a6b903090600401613935565b602060405180830381865afa158015612a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aac9190614219565b94505b6103ab85858585613494565b601583601a811115612acf57612acf61415b565b03612b05576000808080808080612ae8888a018a614e71565b9650965096509650965096509650611a9f8787878787878761352c565b601783601a811115612b1957612b1961415b565b03612b5357600080808080808080612b33898b018b614ef5565b9750975097509750975097509750975061168a88888888888888886135c1565b601883601a811115612b6757612b6761415b565b03611d3a57600080808080612b7e86880188614f7a565b945094509450945094506103ab8585858585613672565b730c462dbb9ec8cd1630f1728b2cfd2769d09f0dd590565b600081846001600160a01b031663dd62ed3e30866040518363ffffffff1660e01b8152600401612bde92919061483d565b602060405180830381865afa158015612bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1f9190614219565b612c2991906149a9565b905061053f8463095ea7b360e01b8584604051602401611adf929190614990565b6000806000866001600160a01b031663ba8b7223876040518263ffffffff1660e01b8152600401612c7b9190613935565b600060405180830381865afa158015612c98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc0919081019061511b565b50505050505092509250925060006001600160a01b0316836001600160a01b031603612cff57604051635435b28960e11b815260040160405180910390fd5b6001600160a01b0380881660009081526033602090815260408083209387168352929052208415612d785780546001600160a01b0316612d525760405163d92e233d60e01b815260040160405180910390fd5b60038101546001600160a01b03168015612d7257612d72848260006124f3565b50612df6565b80546001600160a01b031615612da157604051635435b28960e11b815260040160405180910390fd5b80546001600160a01b038089166001600160a01b031992831617835560018301805485831690841617905560028301805491861691909216179055612de984896000196124f3565b612df684836000196124f3565b6003810180546001600160a01b0319166001600160a01b038816908117909155156103ab57856001600160a01b0316632dc7d74c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7f9190614803565b6001600160a01b0316836001600160a01b031614612eb057604051635435b28960e11b815260040160405180910390fd5b6103ab83876000196124f3565b6000612f12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136e99092919063ffffffff16565b805190915015611d3a5780806020019051810190612f3091906140b8565b611d3a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610455565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b80821015610a435760405163a1aabbe160e01b815260040160405180910390fd5b611d3a8363a9059cbb60e01b8484604051602401611adf929190614990565b805115612ff657805181602001fd5b60405163ee418e3760e01b815260040160405180910390fd5b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90613040903090879060040161483d565b602060405180830381865afa15801561305d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130819190614219565b9050818110156130e55760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e63652062604482015268656c6f77207a65726f60b81b6064820152608401610455565b604051828203906129b490869063095ea7b360e01b90611adf9088908690602401614990565b835180158015906131285750808351141580613128575080825114155b15613146576040516346282e8d60e01b815260040160405180910390fd5b855160005b818110156131db57878181518110613165576131656140d5565b60200260200101516001600160a01b03166384e9bd7e8a6040518263ffffffff1660e01b81526004016131989190613935565b600060405180830381600087803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b50505050806131d490614142565b905061314b565b5060005b82811015612931576000861561321057848281518110613201576132016140d5565b60200260200101519050613257565b600061324e878481518110613227576132276140d5565b6020026020010151878581518110613241576132416140d5565b60200260200101516136f8565b60200151925050505b806001600160a01b0316631c4b774b898481518110613278576132786140d5565b60200260200101516040518263ffffffff1660e01b815260040161329e91815260200190565b600060405180830381600087803b1580156132b857600080fd5b505af11580156132cc573d6000803e3d6000fd5b5050505050806132db90614142565b90506131df565b604051630f41a04d60e11b81526000906001600160a01b03841690631e83409a90613311908790600401613935565b6020604051808303816000875af1158015613330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133549190614219565b9050811561053f576000836001600160a01b031663fc0c546a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561339e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c29190614803565b90506129b46001600160a01b038216333085611aab565b6133e1612b95565b6001600160a01b0316633a46273e83836040518363ffffffff1660e01b815260040161340e929190614990565b600060405180830381600087803b15801561342857600080fd5b505af1158015612976573d6000803e3d6000fd5b6000841561344b575082613464565b613453613901565b61345d85856136f8565b5193509150505b604051630b8b4a6160e21b81526001600160a01b03821690632e2d2984906126949089908b908790600401614b82565b60008084156134a75750829050816134c1565b6134af613901565b6134b985856136f8565b519093509150505b60405163047c207560e31b815260048101879052306024820181905260448201526001600160a01b0382811660648301528316906323e103a890608401600060405180830381600087803b15801561351857600080fd5b505af1158015611a9f573d6000803e3d6000fd5b6000841561353b575082613554565b613543613901565b61354d85856136f8565b5193509150505b6040516303a7722360e11b8152600481018890526001600160a01b03898116602483015283811660448301526064820188905282169063074ee44690608401600060405180830381600087803b1580156135ad57600080fd5b505af115801561168a573d6000803e3d6000fd5b6000836135dd5760006135d484846136f8565b60200151945050505b60405163a62b2a3d60e01b81526001600160a01b038a81166004830152602482018a905260448201899052606482018890526084820187905284169063a62b2a3d9060a4016020604051808303816000875af1158015613641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136659190614219565b9998505050505050505050565b8261368c57600061368383836136f8565b60200151935050505b6040516324d83b7960e01b815260048101859052602481018690526001600160a01b038316906324d83b7990604401600060405180830381600087803b1580156136d557600080fd5b505af1158015612931573d6000803e3d6000fd5b60606128e184846000856137a9565b6000613702613901565b50506001600160a01b03808316600090815260326020908152604080832054841680845260338352818420868616855283529281902081516080810183528154861681526001820154861693810193909352600281015485169183019190915260030154909216606083015290811580613784575080516001600160a01b0316155b156137a25760405163d92e233d60e01b815260040160405180910390fd5b9250929050565b60608247101561380a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610455565b61381385611971565b61385f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610455565b600080866001600160a01b0316858760405161387b9190614912565b60006040518083038185875af1925050503d80600081146138b8576040519150601f19603f3d011682016040523d82523d6000602084013e6138bd565b606091505b5091509150611e78828286606083156138d75750816128e4565b8251156138e75782518084602001fd5b8160405162461bcd60e51b81526004016104559190615257565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60008083601f84011261395b57600080fd5b5081356001600160401b0381111561397257600080fd5b6020830191508360208260051b85010111156137a257600080fd5b6000806000806000806000806080898b0312156139a957600080fd5b88356001600160401b03808211156139c057600080fd5b6139cc8c838d01613949565b909a50985060208b01359150808211156139e557600080fd5b6139f18c838d01613949565b909850965060408b0135915080821115613a0a57600080fd5b613a168c838d01613949565b909650945060608b0135915080821115613a2f57600080fd5b50613a3c8b828c01613949565b999c989b5096995094979396929594505050565b6001600160a01b0381168114613a6557600080fd5b50565b8035613a7381613a50565b919050565b600080600060608486031215613a8d57600080fd5b8335613a9881613a50565b92506020840135613aa881613a50565b91506040840135613ab881613a50565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613afb57613afb613ac3565b60405290565b60405161010081016001600160401b0381118282101715613afb57613afb613ac3565b604051601f8201601f191681016001600160401b0381118282101715613b4c57613b4c613ac3565b604052919050565b60006001600160401b03821115613b6d57613b6d613ac3565b5060051b60200190565b8015158114613a6557600080fd5b8035613a7381613b77565b803560ff81168114613a7357600080fd5b600082601f830112613bb257600080fd5b81356020613bc7613bc283613b54565b613b24565b82815260e09283028501820192828201919087851115613be657600080fd5b8387015b85811015613c6e5781818a031215613c025760008081fd5b613c0a613ad9565b8135613c1581613a50565b815281860135613c2481613a50565b8187015260408281013590820152606080830135908201526080613c49818401613b90565b9082015260a0828101359082015260c080830135908201528452928401928101613bea565b5090979650505050505050565b60008060008060008060808789031215613c9457600080fd5b86356001600160401b0380821115613cab57600080fd5b818901915089601f830112613cbf57600080fd5b81356020613ccf613bc283613b54565b82815260e09092028401810191818101908d841115613ced57600080fd5b948201945b83861015613d845760e0868f031215613d0b5760008081fd5b613d13613ad9565b8635613d1e81613a50565b815286840135613d2d81613a50565b81850152604087810135613d4081613b77565b9082015260608781013590820152613d5a60808801613b90565b608082015260a0878101359082015260c08088013590820152825260e09095019490820190613cf2565b9a50508a013592505080821115613d9a57600080fd5b613da68a838b01613ba1565b96506040890135915080821115613dbc57600080fd5b613dc88a838b01613949565b90965094506060890135915080821115613de157600080fd5b50613dee89828a01613949565b979a9699509497509295939492505050565b60008060408385031215613e1357600080fd5b8235613e1e81613a50565b91506020830135613e2e81613a50565b809150509250929050565b600060208284031215613e4b57600080fd5b81356128e481613a50565b60008060408385031215613e6957600080fd5b8235613e7481613a50565b9150613e8260208401613b90565b90509250929050565b600080600080600060608688031215613ea357600080fd5b85356001600160401b0380821115613eba57600080fd5b613ec689838a01613ba1565b96506020880135915080821115613edc57600080fd5b613ee889838a01613949565b90965094506040880135915080821115613f0157600080fd5b50613f0e88828901613949565b969995985093965092949392505050565b6000806000806000806000806000806000806101008d8f031215613f4257600080fd5b613f4b8d613a68565b9b50613f5960208e01613a68565b9a50613f6760408e01613a68565b9950613f7560608e01613a68565b98506001600160401b0360808e01351115613f8f57600080fd5b613f9f8e60808f01358f01613949565b90985096506001600160401b0360a08e01351115613fbc57600080fd5b613fcc8e60a08f01358f01613949565b90965094506001600160401b0360c08e01351115613fe957600080fd5b613ff98e60c08f01358f01613949565b90945092506001600160401b0360e08e0135111561401657600080fd5b6140268e60e08f01358f01613949565b81935080925050509295989b509295989b509295989b565b6000806000806000806060878903121561405757600080fd5b86356001600160401b038082111561406e57600080fd5b61407a8a838b01613949565b9098509650602089013591508082111561409357600080fd5b61409f8a838b01613949565b90965094506040890135915080821115613de157600080fd5b6000602082840312156140ca57600080fd5b81516128e481613b77565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0397881681529590961660208601529215156040850152606084019190915260ff16608083015260a082015260c081019190915260e00190565b634e487b7160e01b600052601160045260246000fd5b6000600182016141545761415461412c565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561418357600080fd5b8135601b81106128e457600080fd5b6000808335601e198436030181126141a957600080fd5b8301803591506001600160401b038211156141c357600080fd5b6020019150368190038213156137a257600080fd5b6000806000606084860312156141ed57600080fd5b83356141f881613a50565b9250602084013561420881613a50565b929592945050506040919091013590565b60006020828403121561422b57600080fd5b5051919050565b6000806040838503121561424557600080fd5b823591506020830135613e2e81613a50565b60008060006060848603121561426c57600080fd5b833561427781613a50565b9250602084013591506040840135613ab881613a50565b600082601f83011261429f57600080fd5b81356001600160401b038111156142b8576142b8613ac3565b6142cb601f8201601f1916602001613b24565b8181528460208386010111156142e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561431357600080fd5b843561431e81613a50565b9350602085013592506040850135915060608501356001600160401b0381111561434757600080fd5b6143538782880161428e565b91505092959194509250565b60008060006060848603121561437457600080fd5b833561437f81613a50565b92506020840135915060408401356001600160401b038111156143a157600080fd5b6143ad8682870161428e565b9150509250925092565b600082601f8301126143c857600080fd5b813560206143d8613bc283613b54565b82815260059290921b840181019181810190868411156143f757600080fd5b8286015b8481101561441b57803561440e81613a50565b83529183019183016143fb565b509695505050505050565b6000806040838503121561443957600080fd5b823561444481613a50565b915060208301356001600160401b0381111561445f57600080fd5b61446b858286016143b7565b9150509250929050565b6000806000806080858703121561448b57600080fd5b843561449681613a50565b93506020850135925060408501356144ad81613a50565b915060608501356144bd81613b77565b939692955090935050565b600082601f8301126144d957600080fd5b813560206144e9613bc283613b54565b82815260059290921b8401810191818101908684111561450857600080fd5b8286015b8481101561441b578035600881106145245760008081fd5b835291830191830161450c565b600082601f83011261454257600080fd5b81356020614552613bc283613b54565b82815260059290921b8401810191818101908684111561457157600080fd5b8286015b8481101561441b5780356001600160401b038111156145945760008081fd5b6145a28986838b010161428e565b845250918301918301614575565b600080600080600080600060e0888a0312156145cb57600080fd5b87356145d681613a50565b965060208801356145e681613a50565b95506145f460408901613a68565b945061460260608901613a68565b935060808801356001600160401b038082111561461e57600080fd5b61462a8b838c016144c8565b945060a08a013591508082111561464057600080fd5b61464c8b838c01614531565b935060c08a013591508082111561466257600080fd5b5061466f8a828b0161428e565b91505092959891949750929550565b600080600080600080600060e0888a03121561469957600080fd5b87356146a481613a50565b965060208801356146b481613a50565b955060408801356146c481613a50565b945060608801356146d481613a50565b93506080880135925060a0880135915060c08801356001600160401b038111156146fd57600080fd5b61466f8a828b0161428e565b600080600080600060a0868803121561472157600080fd5b853561472c81613a50565b9450602086013561473c81613a50565b935060408601359250606086013561475381613a50565b949793965091946080013592915050565b6000806000806080858703121561477a57600080fd5b843561478581613a50565b935060208501359250604085013561479c81613a50565b9396929550929360600135925050565b6000806000606084860312156147c157600080fd5b83356147cc81613a50565b925060208401356147dc81613a50565b915060408401356001600160401b038111156147f757600080fd5b6143ad868287016143b7565b60006020828403121561481557600080fd5b81516128e481613a50565b60006020828403121561483257600080fd5b81356128e481613b77565b6001600160a01b0392831681529116602082015260400190565b81810381811115611c7257611c7261412c565b60005b8381101561488557818101518382015260200161486d565b50506000910152565b600081518084526148a681602086016020860161486a565b601f01601f19169290920160200192915050565b602081526000825160a060208401526148d660c084018261488e565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6000825161492481846020870161486a565b9190910192915050565b6000806040838503121561494157600080fd5b505080516020909101519092909150565b6000806000806080858703121561496857600080fd5b84519350602085015161497a81613a50565b6040860151606090960151949790965092505050565b6001600160a01b03929092168252602082015260400190565b80820180821115611c7257611c7261412c565b600081518084526020808501808196508360051b8101915082860160005b85811015614a045782840389526149f284835161488e565b988501989350908401906001016149da565b5091979650505050505050565b60c0808252875190820181905260009060209060e0840190828b0184805b83811015614a6757825160088110614a5557634e487b7160e01b83526021600452602483fd5b85529385019391850191600101614a2f565b5050505083810382850152614a7c818a6149bc565b915050614a8c6040840188613928565b614a996060840187613928565b614aa66080840186613928565b82810360a0840152613665818561488e565b600060808284031215614aca57600080fd5b604051608081016001600160401b0381118282101715614aec57614aec613ac3565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6001600160a01b038781168252868116602083015285166040820152606081018490526080810183905260c060a08201819052600090614b5f9083018461488e565b98975050505050505050565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b6001600160a01b038381168252604060208084018290528451918401829052600092858201929091906060860190855b81811015614bef578551851683529483019491830191600101614bd1565b509098975050505050505050565b600082601f830112614c0e57600080fd5b81356020614c1e613bc283613b54565b82815260059290921b84018101918181019086841115614c3d57600080fd5b8286015b8481101561441b5780358352918301918301614c41565b60008060008060008060c08789031215614c7157600080fd5b614c7a87613a68565b955060208701356001600160401b0380821115614c9657600080fd5b614ca28a838b016143b7565b96506040890135915080821115614cb857600080fd5b614cc48a838b01614bfd565b9550614cd260608a01613b85565b94506080890135915080821115614ce857600080fd5b614cf48a838b016143b7565b935060a0890135915080821115614d0a57600080fd5b50614d1789828a016143b7565b9150509295509295509295565b600080600060608486031215614d3957600080fd5b8335614d4481613a50565b92506020840135614d5481613a50565b91506040840135613ab881613b77565b60008060408385031215614d7757600080fd5b8235614d8281613a50565b946020939093013593505050565b60008060008060008060c08789031215614da957600080fd5b8635614db481613a50565b9550602087013594506040870135614dcb81613b77565b93506060870135614ddb81613a50565b92506080870135614deb81613a50565b915060a0870135614dfb81613a50565b809150509295509295509295565b600080600080600060a08688031215614e2157600080fd5b853594506020860135614e3381613b77565b93506040860135614e4381613a50565b92506060860135614e5381613a50565b91506080860135614e6381613a50565b809150509295509295909350565b600080600080600080600060e0888a031215614e8c57600080fd5b8735614e9781613a50565b965060208801359550604088013594506060880135614eb581613b77565b93506080880135614ec581613a50565b925060a0880135614ed581613a50565b915060c0880135614ee581613a50565b8091505092959891949750929550565b600080600080600080600080610100898b031215614f1257600080fd5b8835614f1d81613a50565b97506020890135965060408901359550606089013594506080890135935060a0890135614f4981613b77565b925060c0890135614f5981613a50565b915060e0890135614f6981613a50565b809150509295985092959890939650565b600080600080600060a08688031215614f9257600080fd5b85359450602086013593506040860135614e4381613b77565b80516001600160401b0381168114613a7357600080fd5b600082601f830112614fd357600080fd5b81516020614fe3613bc283613b54565b82815260059290921b8401810191818101908684111561500257600080fd5b8286015b8481101561441b5761501781614fab565b8352918301918301615006565b6000610100828403121561503757600080fd5b61503f613b01565b82519091506001600160401b038082111561505957600080fd5b61506585838601614fc2565b8352602084015191508082111561507b57600080fd5b61508785838601614fc2565b602084015260408401519150808211156150a057600080fd5b6150ac85838601614fc2565b604084015260608401519150808211156150c557600080fd5b506150d284828501614fc2565b6060830152506150e460808301614fab565b60808201526150f560a08301614fab565b60a082015261510660c08301614fab565b60c082015260e082015160e082015292915050565b6000806000806000806000806000898b0361020081121561513b57600080fd5b8a5161514681613a50565b60208c0151909a5061515781613a50565b60408c015190995061516881613a50565b60608c015190985061517981613a50565b8097505060808b0151955060a08b0151945060c08b015193506101008060df19830112156151a657600080fd5b6151ae613b01565b60e08d01518152908c015160208201526101208c015160408201526101408c0151606082015290506151e36101608c01614fab565b60808201526151f56101808c01614fab565b60a08201526152076101a08c01614fab565b60c08201526152196101c08c01614fab565b60e08201526101e08b01519092506001600160401b0381111561523b57600080fd5b6152478c828d01615024565b9150509295985092959850929598565b6020815260006128e4602083018461488e56fea2646970667358221220360f096a64047b66fa365808d91ba8dbe248532330b74d6c389523501a44f6ab64736f6c63430008110033