60806040526001620300095534801561001757600080fd5b50604080518082018252600c81526b26b0b3b4b1b9bbb0b8102b1960a11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fda3ebaaddc6a8bc958033d03ed4b3c5db1d0a3ab0ab4811bd54c6a47b69c207d818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600680546001600160a01b031916331790556132028061010c6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636a6278421161011a578063ba9a7a56116100ad578063d505accf1161007c578063d505accf1461050b578063d6cf0c371461051e578063dd62ed3e1461052c578063e1f1c4a714610557578063fff6cae91461056057600080fd5b8063ba9a7a56146104c9578063bc25cf77146104d2578063c45a0155146104e5578063d21220a7146104f857600080fd5b806389afcb44116100e957806389afcb441461045157806395d89b4114610479578063a9059cbb146104a0578063aab5497c146104b357600080fd5b80636a627842146103de57806370a08231146103f15780637ecebe0014610411578063883bdbfd1461043157600080fd5b8063252c09d71161019257806332148f671161016157806332148f67146103a65780633644e515146103b9578063485cc955146103c25780634f1a4708146103d557600080fd5b8063252c09d7146103075780632b8e06661461033e57806330adf81f14610365578063313ce5671461038c57600080fd5b8063095ea7b3116101ce578063095ea7b31461029d5780630dfe1681146102c057806318160ddd146102eb57806323b872dd146102f457600080fd5b8063022c0d9f14610200578063053f14da1461021557806306fdde03146102315780630902f1ac14610269575b600080fd5b61021361020e366004612b29565b610568565b005b61021e600a5481565b6040519081526020015b60405180910390f35b61025c6040518060400160405280600c81526020016b26b0b3b4b1b9bbb0b8102b1960a11b81525081565b6040516102289190612be3565b610271610aa3565b604080516001600160701b03948516815293909216602084015263ffffffff1690820152606001610228565b6102b06102ab366004612c16565b610acd565b6040519015158152602001610228565b6007546102d3906001600160a01b031681565b6040516001600160a01b039091168152602001610228565b61021e60005481565b6102b0610302366004612c42565b610ae4565b61031a610315366004612c83565b610b79565b6040805163ffffffff90941684526020840192909252151590820152606001610228565b600b546103529062010000900461ffff1681565b60405161ffff9091168152602001610228565b61021e7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610394601281565b60405160ff9091168152602001610228565b6102136103b4366004612c9c565b610bab565b61021e60035481565b6102136103d0366004612cc0565b610c6d565b61021e60055481565b61021e6103ec366004612cf9565b610db6565b61021e6103ff366004612cf9565b60016020526000908152604090205481565b61021e61041f366004612cf9565b60046020526000908152604090205481565b61044461043f366004612d16565b61104d565b6040516102289190612d8b565b61046461045f366004612cf9565b6110a6565b60408051928352602083019190915201610228565b61025c6040518060400160405280600881526020016726a0a3a4a196ab1960c11b81525081565b6102b06104ae366004612c16565b6113dc565b600b5461035290640100000000900461ffff1681565b61021e6103e881565b6102136104e0366004612cf9565b6113e9565b6006546102d3906001600160a01b031681565b6008546102d3906001600160a01b031681565b610213610519366004612dde565b6114f7565b600b546103529061ffff1681565b61021e61053a366004612cc0565b600260209081526000928352604080842090915290825290205481565b61021e61271081565b61021361170d565b62030009546001146105955760405162461bcd60e51b815260040161058c90612e4f565b60405180910390fd5b60006203000955841515806105aa5750600084115b6106065760405162461bcd60e51b815260206004820152602760248201527f4d616769637377617056323a20494e53554646494349454e545f4f555450555460448201526617d05353d5539560ca1b606482015260840161058c565b600080610611610aa3565b5091509150816001600160701b0316871080156106365750806001600160701b031686105b61068e5760405162461bcd60e51b815260206004820152602360248201527f4d616769637377617056323a20494e53554646494349454e545f4c495155494460448201526249545960e81b606482015260840161058c565b60075460085460009182916001600160a01b039182169190811690891682148015906106cc5750806001600160a01b0316896001600160a01b031614155b6107185760405162461bcd60e51b815260206004820152601760248201527f4d616769637377617056323a20494e56414c49445f544f000000000000000000604482015260640161058c565b8a1561072957610729828a8d611837565b891561073a5761073a818a8c611837565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561077e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a29190612e7c565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa1580156107e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080d9190612e7c565b92505050600089856001600160701b03166108289190612eab565b8311610835576000610852565b6108488a6001600160701b038716612eab565b6108529084612eab565b905060006108698a6001600160701b038716612eab565b8311610876576000610893565b6108898a6001600160701b038716612eab565b6108939084612eab565b905060008211806108a45750600081115b6108ff5760405162461bcd60e51b815260206004820152602660248201527f4d616769637377617056323a20494e53554646494349454e545f494e5055545f604482015265105353d5539560d21b606482015260840161058c565b600654604051631184650760e31b81523060048201526000916001600160a01b031690638c23283890602401602060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096c9190612e7c565b9050600061098f61097d8584611982565b61098988612710611982565b906119e9565b905060006109a061097d8585611982565b90506109ce6109b26002612710612fa2565b6109c86001600160701b038c8116908c16611982565b90611982565b6109d88383611982565b1015610a175760405162461bcd60e51b815260206004820152600e60248201526d4d616769637377617056323a204b60901b604482015260640161058c565b610a2382828787611a3f565b8097508198505050505050610a3a84848888611d21565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a3505060016203000955505050505050505050565b6009546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610ada338484611ef7565b5060015b92915050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610b63576001600160a01b0384166000908152600260209081526040808320338452909152902054610b3e90836119e9565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610b6e848484611f59565b5060015b9392505050565b600c8161ffff8110610b8a57600080fd5b600302018054600182015460029092015463ffffffff909116925060ff1683565b6203000954600114610bcf5760405162461bcd60e51b815260040161058c90612e4f565b600062030009819055600b54640100000000900461ffff1690610bf4600c8385611fff565b600b805461ffff808416640100000000810265ffff000000001990931692909217909255919250831614610c61576040805161ffff8085168252831660208201527fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a910160405180910390a15b50506001620300095550565b6006546001600160a01b03163314610cc05760405162461bcd60e51b815260206004820152601660248201527526b0b3b4b1b9bbb0b82b191d102327a92124a22222a760511b604482015260640161058c565b600780546001600160a01b038085166001600160a01b0319928316811790935560088054918516919092161790556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190612fb1565b60ff1660055550506040805160608101825263ffffffff4216808252600060208301819052600192909301829052600c805463ffffffff19169091179055600d91909155600e805460ff19169091179055600b805465ffffffffffff1916640100010000179055565b60006203000954600114610ddc5760405162461bcd60e51b815260040161058c90612e4f565b60006203000981905580610dee610aa3565b506007546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e649190612e7c565b6008546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190612e7c565b90506000610eed836001600160701b0387166119e9565b90506000610f04836001600160701b0387166119e9565b60008054919250819003610f3e57610f2a6103e8610989610f258686611982565b6120b0565b9750610f3960006103e8612120565b610f85565b610f826001600160701b038816610f558584611982565b610f5f9190612fe4565b6001600160701b038816610f738585611982565b610f7d9190612fe4565b6121af565b97505b60008811610fe85760405162461bcd60e51b815260206004820152602a60248201527f4d616769637377617056323a20494e53554646494349454e545f4c495155494460448201526912551657d3525395115160b21b606482015260840161058c565b610ff28989612120565b610ffe85858989611d21565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016203000955509395945050505050565b6060610b724284848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a54600b54600c9594935090915061ffff80821691620100009004166121c5565b60008062030009546001146110cd5760405162461bcd60e51b815260040161058c90612e4f565b600062030009819055806110df610aa3565b506007546008546040516370a0823160e01b81523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190612e7c565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190612e7c565b30600090815260016020526040812054905491925090806111ec8386611982565b6111f69190612fe4565b9950806112038385611982565b61120d9190612fe4565b985060008a11801561121f5750600089115b61127e5760405162461bcd60e51b815260206004820152602a60248201527f4d616769637377617056323a20494e53554646494349454e545f4c495155494460448201526912551657d0955493915160b21b606482015260840161058c565b61128830836122b2565b611293868c8c611837565b61129e858c8b611837565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa1580156112e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113069190612e7c565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa15801561134d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113719190612e7c565b925061137f84848a8a611d21565b604080518b8152602081018b90526001600160a01b038d169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a3505050505050505060016203000981905550915091565b6000610ada338484611f59565b620300095460011461140d5760405162461bcd60e51b815260040161058c90612e4f565b600062030009556007546008546009546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916114aa91849186916114a5916001600160701b039091169084906370a08231906024015b602060405180830381865afa158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190612e7c565b611837565b6009546040516370a0823160e01b8152306004820152610c6191839186916114a591600160701b9091046001600160701b0316906001600160a01b038516906370a0823190602401611464565b4284101561153e5760405162461bcd60e51b8152602060048201526014602482015273135859da58dcddd85c158c8e881156141254915160621b604482015260640161058c565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761159183612ff8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161160a92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611675573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116ab5750886001600160a01b0316816001600160a01b0316145b6116f75760405162461bcd60e51b815260206004820152601e60248201527f4d616769637377617056323a20494e56414c49445f5349474e41545552450000604482015260640161058c565b611702898989611ef7565b505050505050505050565b62030009546001146117315760405162461bcd60e51b815260040161058c90612e4f565b600062030009556007546040516370a0823160e01b815230600482015261182e916001600160a01b0316906370a0823190602401602060405180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a69190612e7c565b6008546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190612e7c565b6009546001600160701b0380821691600160701b900416611d21565b60016203000955565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b179052915160009283928716916118c39190613011565b6000604051808303816000865af19150503d8060008114611900576040519150601f19603f3d011682016040523d82523d6000602084013e611905565b606091505b509150915081801561192f57508051158061192f57508080602001905181019061192f919061302d565b61197b5760405162461bcd60e51b815260206004820152601c60248201527f4d616769637377617056323a205452414e534645525f4641494c454400000000604482015260640161058c565b5050505050565b60008115806119a657508282611998818361304f565b92506119a49083612fe4565b145b610ade5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161058c565b6000826119f68382612eab565b9150811115610ade5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161058c565b600654604051634ec1b53760e11b8152306004820152600091829182918291829182916001600160a01b0390911690639d836a6e9060240160a060405180830381865afa158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190613066565b60075460085494995092975090955093506001600160a01b0390811692501660005b60028160ff161015611b8657600060ff821615611af75782611af9565b835b9050600060ff831615611b0c578b611b0e565b8c5b90508015611b71576000612710611b258a8461304f565b611b2f9190612fe4565b90508015611b4257611b42838b83611837565b6000612710611b51898561304f565b611b5b9190612fe4565b90508015611b6e57611b6e848a83611837565b50505b50508080611b7e906130bd565b915050611ada565b506040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190612e7c565b6040516370a0823160e01b81523060048201529098506001600160a01b038216906370a0823190602401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e7c565b9650611c686127108d612fe4565b881015611cb75760405162461bcd60e51b815260206004820152601d60248201527f4d616769637377617056323a2062616c616e63653041646a7573746564000000604482015260640161058c565b611cc36127108c612fe4565b871015611d125760405162461bcd60e51b815260206004820152601d60248201527f4d616769637377617056323a2062616c616e63653141646a7573746564000000604482015260640161058c565b50505050505094509492505050565b6001600160701b038411801590611d3f57506001600160701b038311155b611d835760405162461bcd60e51b81526020600482015260156024820152744d616769637377617056323a204f564552464c4f5760581b604482015260640161058c565b60095463ffffffff42811691600160e01b90048116820390811615801590611db357506001600160701b03841615155b8015611dc757506001600160701b03831615155b15611e5f57836001600160701b0316836001600160701b0316600554600a611def91906130dc565b611df9919061304f565b611e039190612fe4565b600a55600b54611e389061ffff1642600a54600b54600c9392919061ffff62010000820481169164010000000090041661233c565b600b805463ffffffff19166201000061ffff9384160261ffff191617929091169190911790555b6009805463ffffffff8416600160e01b026001600160e01b036001600160701b03898116600160701b9081026001600160e01b03199095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316600090815260016020526040902054611f7c90826119e9565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611fab9082612474565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f4c9085815260200190565b6000808361ffff16116120385760405162461bcd60e51b81526020600482015260016024820152604960f81b604482015260640161058c565b8261ffff168261ffff161161204e575081610b72565b825b8261ffff168161ffff1610156120a7576001858261ffff1661ffff8110612079576120796130e8565b60030201805463ffffffff191663ffffffff929092169190911790558061209f816130fe565b915050612050565b50909392505050565b6000600382111561211157508060006120ca600283612fe4565b6120d590600161311f565b90505b8181101561210b579050806002816120f08186612fe4565b6120fa919061311f565b6121049190612fe4565b90506120d8565b50919050565b811561211b575060015b919050565b60005461212d9082612474565b60009081556001600160a01b0383168152600160205260409020546121529082612474565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121a39085815260200190565b60405180910390a35050565b60008183106121be5781610b72565b5090919050565b606060008261ffff16116121ff5760405162461bcd60e51b81526020600482015260016024820152604960f81b604482015260640161058c565b845167ffffffffffffffff81111561221957612219613132565b604051908082528060200260200182016040528015612242578160200160208202803683370190505b50905060005b85518110156122a7576122788888888481518110612268576122686130e8565b60200260200101518888886124c9565b82828151811061228a5761228a6130e8565b60209081029190910101528061229f81612ff8565b915050612248565b509695505050505050565b6001600160a01b0382166000908152600160205260409020546122d590826119e9565b6001600160a01b038316600090815260016020526040812091909155546122fc90826119e9565b60009081556040518281526001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016121a3565b6000806000888861ffff1661ffff8110612358576123586130e8565b6040805160608101825260039290920292909201805463ffffffff9081168084526001830154602085015260029092015460ff1615159383019390935290925090881690036123ad5787859250925050612469565b8461ffff168461ffff161180156123d557506123ca600186613148565b61ffff168861ffff16145b156123e2578391506123e6565b8491505b816123f289600161316a565b6123fc9190613185565b925061240981888861263b565b898461ffff1661ffff8110612420576124206130e8565b825160039190910291909101805463ffffffff191663ffffffff909216919091178155602082015160018201556040909101516002909101805460ff1916911515919091179055505b965096945050505050565b600082612481838261311f565b9150811015610ade5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161058c565b60008463ffffffff16600003612553576000878461ffff1661ffff81106124f2576124f26130e8565b6040805160608101825260039290920292909201805463ffffffff9081168084526001830154602085015260029092015460ff16151593830193909352909250908816146125485761254581888761263b565b90505b602001519050612631565b600061255f86886131a6565b90506000806125728a8a858a8a8a6126b4565b91509150816000015163ffffffff168363ffffffff160361259b57506020015191506126319050565b806000015163ffffffff168363ffffffff16036125c057602001519250612631915050565b815181516000916125d0916131a6565b83519091506000906125e290866131a6565b90508063ffffffff168263ffffffff16856020015185602001516126069190612eab565b6126109190612fe4565b61261a919061304f565b8460200151612629919061311f565b955050505050505b9695505050505050565b6040805160608101825260008082526020820181905291810191909152835160009061266790856131a6565b905060405180606001604052808563ffffffff1681526020018263ffffffff1685612692919061304f565b87602001516126a1919061311f565b8152600160209091015295945050505050565b60408051606081018252600080825260208201819052918101919091526040805160608101825260008082526020820181905291810191909152878461ffff1661ffff8110612705576127056130e8565b6040805160608101825260039290920292909201805463ffffffff168083526001820154602084015260029091015460ff16151592820192909252925061274e90889088612871565b1561277957815163ffffffff878116911614612469578161277083888861263b565b91509150612469565b878361278686600161316a565b6127909190613185565b61ffff1661ffff81106127a5576127a56130e8565b6040805160608101825260039290920292909201805463ffffffff168252600181015460208301526002015460ff16151591810182905292506128145760408051606081018252895463ffffffff16815260018a0154602082015260028a015460ff1615159181019190915291505b61282387836000015188612871565b6128555760405162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015260640161058c565b6128628888888787612942565b91509150965096945050505050565b60008363ffffffff168363ffffffff161115801561289b57508363ffffffff168263ffffffff1611155b156128b7578163ffffffff168363ffffffff1611159050610b72565b60008463ffffffff168463ffffffff16116128e6576128e163ffffffff85166401000000006131c3565b6128ee565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116129265761292163ffffffff85166401000000006131c3565b61292e565b8363ffffffff165b64ffffffffff169091111595945050505050565b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810183905290918361298386600161316a565b61298d9190613185565b61ffff169050600060018561ffff16836129a7919061311f565b6129b19190612eab565b905060005b60026129c2838561311f565b6129cc9190612fe4565b9050896129dd61ffff8816836131e1565b61ffff81106129ee576129ee6130e8565b6040805160608101825260039290920292909201805463ffffffff168252600181015460208301526002015460ff1615159181018290529550612a3d57612a3681600161311f565b92506129b6565b8961ffff8716612a4e83600161311f565b612a5891906131e1565b61ffff8110612a6957612a696130e8565b6040805160608101825260039290920292909201805463ffffffff168252600181015460208301526002015460ff161515918101919091528551909450600090612ab5908b908b612871565b9050808015612ace5750612ace8a8a8760000151612871565b15612ad95750612b04565b80612af057612ae9600183612eab565b9250612afe565b612afb82600161311f565b93505b506129b6565b5050509550959350505050565b6001600160a01b0381168114612b2657600080fd5b50565b600080600080600060808688031215612b4157600080fd5b85359450602086013593506040860135612b5a81612b11565b9250606086013567ffffffffffffffff80821115612b7757600080fd5b818801915088601f830112612b8b57600080fd5b813581811115612b9a57600080fd5b896020828501011115612bac57600080fd5b9699959850939650602001949392505050565b60005b83811015612bda578181015183820152602001612bc2565b50506000910152565b6020815260008251806020840152612c02816040850160208701612bbf565b601f01601f19169190910160400192915050565b60008060408385031215612c2957600080fd5b8235612c3481612b11565b946020939093013593505050565b600080600060608486031215612c5757600080fd5b8335612c6281612b11565b92506020840135612c7281612b11565b929592945050506040919091013590565b600060208284031215612c9557600080fd5b5035919050565b600060208284031215612cae57600080fd5b813561ffff81168114610b7257600080fd5b60008060408385031215612cd357600080fd5b8235612cde81612b11565b91506020830135612cee81612b11565b809150509250929050565b600060208284031215612d0b57600080fd5b8135610b7281612b11565b60008060208385031215612d2957600080fd5b823567ffffffffffffffff80821115612d4157600080fd5b818501915085601f830112612d5557600080fd5b813581811115612d6457600080fd5b8660208260051b8501011115612d7957600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015612dc357835183529284019291840191600101612da7565b50909695505050505050565b60ff81168114612b2657600080fd5b600080600080600080600060e0888a031215612df957600080fd5b8735612e0481612b11565b96506020880135612e1481612b11565b955060408801359450606088013593506080880135612e3281612dcf565b9699959850939692959460a0840135945060c09093013592915050565b602080825260139082015272135859da58dcddd85c158c8e881313d0d2d151606a1b604082015260600190565b600060208284031215612e8e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ade57610ade612e95565b600181815b80851115612ef9578160001904821115612edf57612edf612e95565b80851615612eec57918102915b93841c9390800290612ec3565b509250929050565b600082612f1057506001610ade565b81612f1d57506000610ade565b8160018114612f335760028114612f3d57612f59565b6001915050610ade565b60ff841115612f4e57612f4e612e95565b50506001821b610ade565b5060208310610133831016604e8410600b8410161715612f7c575081810a610ade565b612f868383612ebe565b8060001904821115612f9a57612f9a612e95565b029392505050565b6000610b7260ff841683612f01565b600060208284031215612fc357600080fd5b8151610b7281612dcf565b634e487b7160e01b600052601260045260246000fd5b600082612ff357612ff3612fce565b500490565b60006001820161300a5761300a612e95565b5060010190565b60008251613023818460208701612bbf565b9190910192915050565b60006020828403121561303f57600080fd5b81518015158114610b7257600080fd5b8082028115828204841417610ade57610ade612e95565b600080600080600060a0868803121561307e57600080fd5b85519450602086015161309081612b11565b6040870151606088015191955093506130a881612b11565b80925050608086015190509295509295909350565b600060ff821660ff81036130d3576130d3612e95565b60010192915050565b6000610b728383612f01565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361311557613115612e95565b6001019392505050565b80820180821115610ade57610ade612e95565b634e487b7160e01b600052604160045260246000fd5b61ffff82811682821603908082111561316357613163612e95565b5092915050565b61ffff81811683821601908082111561316357613163612e95565b600061ffff8084168061319a5761319a612fce565b92169190910692915050565b63ffffffff82811682821603908082111561316357613163612e95565b64ffffffffff81811683821601908082111561316357613163612e95565b6000826131f0576131f0612fce565b50069056fea164736f6c6343000812000a