0x60806040523480156200001157600080fd5b50604051620037bb380380620037bb833981016040819052620000349162000172565b33604051806040016040528060088152602001674e4654476966747360c01b815250604051806040016040528060048152602001634e46544760e01b81525081600090816200008491906200024f565b5060016200009382826200024f565b5050506001600160a01b038116620000c557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d08162000103565b50600880546001600160a01b039384166001600160a01b031991821617909155600980549290931691161790556200031b565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200016d57600080fd5b919050565b600080604083850312156200018657600080fd5b620001918362000155565b9150620001a16020840162000155565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001d557607f821691505b602082108103620001f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024a57600081815260208120601f850160051c81016020861015620002255750805b601f850160051c820191505b81811015620002465782815560010162000231565b5050505b505050565b81516001600160401b038111156200026b576200026b620001aa565b62000283816200027c8454620001c0565b84620001fc565b602080601f831160018114620002bb5760008415620002a25750858301515b600019600386901b1c1916600185901b17855562000246565b600085815260208120601f198616915b82811015620002ec57888601518255948401946001909101908401620002cb565b50858210156200030b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613490806200032b6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80638da5cb5b11610125578063cc3fed61116100ad578063dbfd4b981161007c578063dbfd4b9814610488578063e985e9c514610490578063f2fde38b146104a3578063f9e62d40146104b6578063fc51d967146104c957600080fd5b8063cc3fed6114610445578063d500084214610458578063d936b6271461046b578063da815b8e1461048057600080fd5b8063b28fc973116100f4578063b28fc973146103f1578063b88d4fde14610404578063c1cc701014610417578063c87b56dd1461041f578063c908b4ef1461043257600080fd5b80638da5cb5b146103b257806395d89b41146103c3578063a2164458146103cb578063a22cb465146103de57600080fd5b806335e626c6116101a857806370a082311161017757806370a082311461035c578063715018a61461036f5780637476e892146103775780637b0540d31461038a57806385aae3821461039d57600080fd5b806335e626c61461031057806342842e0e146103235780634630b2fb146103365780636352211e1461034957600080fd5b80630f8e4d41116101ef5780630f8e4d411461029e57806320f5104a146102bf57806323b872dd146102d2578063287cc96b146102e557806332d33cd0146102ed57600080fd5b806301ffc9a71461022157806306fdde0314610249578063081812fc1461025e578063095ea7b314610289575b600080fd5b61023461022f366004612b23565b6104dc565b60405190151581526020015b60405180910390f35b610251610522565b6040516102409190612b90565b61027161026c366004612ba3565b6105b4565b6040516001600160a01b039091168152602001610240565b61029c610297366004612bd1565b6105dd565b005b6102b16102ac366004612cca565b6105ec565b604051908152602001610240565b6102b16102cd366004612d2e565b610631565b61029c6102e0366004612d74565b610657565b6102b16106e7565b6102346102fb366004612ba3565b6000908152600f602052604090205460ff1690565b6102b161031e366004612db5565b610835565b61029c610331366004612d74565b61085d565b6102b1610344366004612d2e565b61087d565b610271610357366004612ba3565b6108a3565b6102b161036a366004612dea565b6108ae565b61029c6108f6565b6102b1610385366004612d2e565b61090a565b61029c610398366004612db5565b610930565b6103a5610c17565b6040516102409190612e07565b6007546001600160a01b0316610271565b610251610c78565b61029c6103d9366004612e54565b610c87565b61029c6103ec366004612ea7565b610d47565b6102b16103ff366004612dea565b610d52565b61029c610412366004612ee0565b610e77565b6103a5610e8e565b61025161042d366004612ba3565b610eee565b61029c610440366004612f60565b610ef9565b6102b1610453366004612cca565b611417565b6102b1610466366004612db5565b61142c565b61047361143e565b6040516102409190612ff7565b610473611517565b600b546102b1565b61023461049e366004613059565b6115e7565b61029c6104b1366004612dea565b611615565b61029c6104c4366004612ba3565b611653565b6102b16104d7366004612db5565b61182c565b60006001600160e01b031982166380ac58cd60e01b148061050d57506001600160e01b03198216635b5e139f60e01b145b8061051c575061051c82611949565b92915050565b60606000805461053190613087565b80601f016020809104026020016040519081016040528092919081815260200182805461055d90613087565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b60006105bf8261196e565b506000828152600460205260409020546001600160a01b031661051c565b6105e88282336119a7565b5050565b60006014836040516105fe91906130c1565b90815260200160405180910390208260405161061a91906130c1565b908152602001604051809103902054905092915050565b600061063c82610835565b610646848461090a565b61065091906130f3565b9392505050565b6001600160a01b03821661068657604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006106938383336119b4565b9050836001600160a01b0316816001600160a01b0316146106e1576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161067d565b50505050565b600080600a805480602002602001604051908101604052809291908181526020016000905b828210156107b857838290600052602060002001805461072b90613087565b80601f016020809104026020016040519081016040528092919081815260200182805461075790613087565b80156107a45780601f10610779576101008083540402835291602001916107a4565b820191906000526020600020905b81548152906001019060200180831161078757829003601f168201915b50505050508152602001906001019061070c565b5050825192935060009150505b8181101561082f576107ef8382815181106107e2576107e261310a565b6020026020010151610835565b6108118483815181106108045761080461310a565b602002602001015161142c565b61081b91906130f3565b6108259085613120565b93506001016107c5565b50505090565b600060118260405161084791906130c1565b9081526020016040518091039020549050919050565b61087883838360405180602001604052806000815250610e77565b505050565b6001600160a01b038216600090815260136020526040808220905161061a9084906130c1565b600061051c8261196e565b60006001600160a01b0382166108da576040516322718ad960e21b81526000600482015260240161067d565b506001600160a01b031660009081526003602052604090205490565b6108fe611aad565b6109086000611ada565b565b6001600160a01b038216600090815260126020526040808220905161061a9084906130c1565b6009546040516321512b5f60e11b81523360048201819052916000916001600160a01b03909116906342a256be90602401600060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a69190810190613133565b90506109ca6040518060200160405280600081525082611b2c90919063ffffffff16565b15610a175760405162461bcd60e51b815260206004820152601e60248201527f547769747465722068616e646c65206e6f742079657420636c61696d65640000604482015260640161067d565b6009546040516321512b5f60e11b81526001600160a01b03848116600483015260009216906342a256be90602401600060405180830381865afa158015610a62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8a9190810190613133565b90506000601482604051610a9e91906130c1565b908152602001604051809103902085604051610aba91906130c1565b908152602001604051809103902054905080600003610b125760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161067d565b610b1b84611b51565b6001600160a01b038416600090815260126020526040908190209051610b429087906130c1565b908152602001604051809103902060008154610b5d906131aa565b9091555060005b81811015610c0f576000600b546001610b7d9190613120565b600b8190559050610b8e8682611cf7565b610b988188611d11565b610ba181611653565b6000818152600f602052604090819020805460ff1916600117905551601490610bcb9086906130c1565b908152602001604051809103902087604051610be791906130c1565b908152602001604051809103902060008154610c02906131c3565b9091555050600101610b64565b505050505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156105aa57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c51575050505050905090565b60606001805461053190613087565b610c8f611aad565b610c9882611d61565b15610ce55760405162461bcd60e51b815260206004820152601c60248201527f746f6b656e55524920616c72656164792077686974656c697374656400000000604482015260640161067d565b600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801610d218382613220565b5080601183604051610d3391906130c1565b908152604051908190036020019020555050565b6105e8338383611e96565b600080600a805480602002602001604051908101604052809291908181526020016000905b82821015610e23578382906000526020600020018054610d9690613087565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc290613087565b8015610e0f5780601f10610de457610100808354040283529160200191610e0f565b820191906000526020600020905b815481529060010190602001808311610df257829003601f168201915b505050505081526020019060010190610d77565b5050825192935060009150505b81811015610e6f57610e5b85848381518110610e4e57610e4e61310a565b6020026020010151610631565b610e659085613120565b9350600101610e30565b505050919050565b610e82848484610657565b6106e184848484611f35565b6060600d8054806020026020016040519081016040528092919081815260200182805480156105aa576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c51575050505050905090565b606061051c8261205e565b610f3882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610f845760405162461bcd60e51b815260206004820152601c60248201527f746f6b656e555249206e6f792077686974656c69737465642079657400000000604482015260640161067d565b6009546040516303592eb760e11b81526000916001600160a01b0316906306b25d6e90610fb5908790600401612b90565b602060405180830381865afa158015610fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff691906132e0565b905060006011848460405161100c9291906132fd565b90815260200160405180910390205490506000600860009054906101000a90046001600160a01b03166001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109691906132e0565b6009546040516321512b5f60e11b81523360048201529192506000916001600160a01b03909116906342a256be90602401600060405180830381865afa1580156110e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110c9190810190613133565b90506001600160a01b038416156111ed576000600b54600161112e9190613120565b905061113a8582611cf7565b61117a8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d1192505050565b6000818152600f60205260409020805460ff19169055600b81905561119e85611b51565b6001600160a01b0385166000908152601260205260409081902090516111c790899089906132fd565b9081526020016040518091039020600081546111e2906131aa565b909155506112449050565b6111f68761216f565b60148760405161120691906130c1565b908152602001604051809103902086866040516112249291906132fd565b90815260200160405180910390206000815461123f906131aa565b909155505b61125082333086612302565b60085460405163095ea7b360e01b81526001600160a01b039182166004820152602481018590529083169063095ea7b3906044016020604051808303816000875af11580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c7919061330d565b50600854604051636e553f6560e01b8152600481018590523060248201526001600160a01b0390911690636e553f65906044016020604051808303816000875af1158015611319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133d919061332a565b506113473361235c565b6001600160a01b03841660009081526013602052604090819020905161137090889088906132fd565b90815260200160405180910390206000815461138b906131aa565b909155506040516010906113a290889088906132fd565b9081526020016040518091039020600081546113bd906131aa565b909155506040516001600160a01b0385169033907f029da4fe45c5741159f89594ab95ec8522b81ec145f15e410a570765ca5354cd90611406908b9086908c908c908b90613343565b60405180910390a350505050505050565b600061142282610835565b61064684846105ec565b600060108260405161084791906130c1565b6060600e805480602002602001604051908101604052809291908181526020016000905b8282101561150e57838290600052602060002001805461148190613087565b80601f01602080910402602001604051908101604052809291908181526020018280546114ad90613087565b80156114fa5780601f106114cf576101008083540402835291602001916114fa565b820191906000526020600020905b8154815290600101906020018083116114dd57829003601f168201915b505050505081526020019060010190611462565b50505050905090565b6060600a805480602002602001604051908101604052809291908181526020016000905b8282101561150e57838290600052602060002001805461155a90613087565b80601f016020809104026020016040519081016040528092919081815260200182805461158690613087565b80156115d35780601f106115a8576101008083540402835291602001916115d3565b820191906000526020600020905b8154815290600101906020018083116115b657829003601f168201915b50505050508152602001906001019061153b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61161d611aad565b6001600160a01b03811661164757604051631e4fbdf760e01b81526000600482015260240161067d565b61165081611ada565b50565b61165c816108a3565b6001600160a01b0316336001600160a01b0316146116a85760405162461bcd60e51b81526020600482015260096024820152682337b93134b23232b760b91b604482015260640161067d565b60006116b382610eee565b905060006011826040516116c791906130c1565b908152604051908190036020018120546009546321512b5f60e11b83523360048401529092506000916001600160a01b03909116906342a256be90602401600060405180830381865afa158015611722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261174a9190810190613133565b6000858152600f602052604090819020805460ff191660011790556008549051632d182be560e21b8152600481018590523360248201523060448201529192506001600160a01b03169063b460af94906064016020604051808303816000875af11580156117bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e0919061332a565b50336001600160a01b03167f473ccb4e77cbfe3e457cb6c07c15034c23b2911743e19b60ec3586e7c9225c9b82858560405161181e939291906133a5565b60405180910390a250505050565b600080600a805480602002602001604051908101604052809291908181526020016000905b828210156118fd57838290600052602060002001805461187090613087565b80601f016020809104026020016040519081016040528092919081815260200182805461189c90613087565b80156118e95780601f106118be576101008083540402835291602001916118e9565b820191906000526020600020905b8154815290600101906020018083116118cc57829003601f168201915b505050505081526020019060010190611851565b5050825192935060009150505b81811015610e6f57611935858483815181106119285761192861310a565b6020026020010151611417565b61193f9085613120565b935060010161190a565b60006001600160e01b03198216632483248360e11b148061051c575061051c82612502565b6000818152600260205260408120546001600160a01b03168061051c57604051637e27328960e01b81526004810184905260240161067d565b6108788383836001612552565b6000828152600260205260408120546001600160a01b03908116908316156119e1576119e1818486612658565b6001600160a01b03811615611a1f576119fe600085600080612552565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611a4e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6007546001600160a01b031633146109085760405163118cdaa760e01b815233600482015260240161067d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000815183511480156106505750508051602091820120825192909101919091201490565b6000600a805480602002602001604051908101604052809291908181526020016000905b82821015611c21578382906000526020600020018054611b9490613087565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc090613087565b8015611c0d5780601f10611be257610100808354040283529160200191611c0d565b820191906000526020600020905b815481529060010190602001808311611bf057829003601f168201915b505050505081526020019060010190611b75565b5050825192935060019150600090505b82811015611c9d576001600160a01b03851660009081526012602052604090208451859083908110611c6557611c6561310a565b6020026020010151604051611c7a91906130c1565b908152602001604051809103902054600014611c9557600091505b600101611c31565b5080156106e157600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0386166001600160a01b031990911617905550505050565b6105e88282604051806020016040528060008152506126bc565b6000828152600660205260409020611d298282613220565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b600080600a805480602002602001604051908101604052809291908181526020016000905b82821015611e32578382906000526020600020018054611da590613087565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd190613087565b8015611e1e5780601f10611df357610100808354040283529160200191611e1e565b820191906000526020600020905b815481529060010190602001808311611e0157829003601f168201915b505050505081526020019060010190611d86565b5050825192935060009150505b81811015611e8b57611e73838281518110611e5c57611e5c61310a565b602002602001015186611b2c90919063ffffffff16565b15611e8357506001949350505050565b600101611e3f565b506000949350505050565b6001600160a01b038216611ec857604051630b61174360e31b81526001600160a01b038316600482015260240161067d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156106e157604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611f779033908890879087906004016133db565b6020604051808303816000875af1925050508015611fb2575060408051601f3d908101601f19168201909252611faf9181019061340e565b60015b61201b573d808015611fe0576040519150601f19603f3d011682016040523d82523d6000602084013e611fe5565b606091505b50805160000361201357604051633250574960e11b81526001600160a01b038516600482015260240161067d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461205757604051633250574960e11b81526001600160a01b038516600482015260240161067d565b5050505050565b60606120698261196e565b506000828152600660205260408120805461208390613087565b80601f01602080910402602001604051908101604052809291908181526020018280546120af90613087565b80156120fc5780601f106120d1576101008083540402835291602001916120fc565b820191906000526020600020905b8154815290600101906020018083116120df57829003601f168201915b50505050509050600061211a60408051602081019091526000815290565b9050805160000361212c575092915050565b81511561215e57808260405160200161214692919061342b565b60405160208183030381529060405292505050919050565b612167846126d3565b949350505050565b6000600a805480602002602001604051908101604052809291908181526020016000905b8282101561223f5783829060005260206000200180546121b290613087565b80601f01602080910402602001604051908101604052809291908181526020018280546121de90613087565b801561222b5780601f106122005761010080835404028352916020019161222b565b820191906000526020600020905b81548152906001019060200180831161220e57829003601f168201915b505050505081526020019060010190612193565b5050825192935060019150600090505b828110156122bf5760148560405161226791906130c1565b90815260200160405180910390208482815181106122875761228761310a565b602002602001015160405161229c91906130c1565b9081526020016040518091039020546000146122b757600091505b60010161224f565b5080156106e157600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd016120578582613220565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526106e1908590612747565b6000600a805480602002602001604051908101604052809291908181526020016000905b8282101561242c57838290600052602060002001805461239f90613087565b80601f01602080910402602001604051908101604052809291908181526020018280546123cb90613087565b80156124185780601f106123ed57610100808354040283529160200191612418565b820191906000526020600020905b8154815290600101906020018083116123fb57829003601f168201915b505050505081526020019060010190612380565b5050825192935060019150600090505b828110156124a8576001600160a01b038516600090815260136020526040902084518590839081106124705761247061310a565b602002602001015160405161248591906130c1565b9081526020016040518091039020546000146124a057600091505b60010161243c565b5080156106e157600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0386166001600160a01b031990911617905550505050565b60006001600160e01b031982166380ac58cd60e01b148061253357506001600160e01b03198216635b5e139f60e01b145b8061051c57506301ffc9a760e01b6001600160e01b031983161461051c565b808061256657506001600160a01b03821615155b156126285760006125768461196e565b90506001600160a01b038316158015906125a25750826001600160a01b0316816001600160a01b031614155b80156125b557506125b381846115e7565b155b156125de5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161067d565b81156126265783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6126638383836127aa565b610878576001600160a01b03831661269157604051637e27328960e01b81526004810182905260240161067d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161067d565b6126c6838361280d565b6108786000848484611f35565b60606126de8261196e565b5060006126f660408051602081019091526000815290565b905060008151116127165760405180602001604052806000815250610650565b8061272084612872565b60405160200161273192919061342b565b6040516020818303038152906040529392505050565b600061275c6001600160a01b03841683612905565b9050805160001415801561278157508080602001905181019061277f919061330d565b155b1561087857604051635274afe760e01b81526001600160a01b038416600482015260240161067d565b60006001600160a01b038316158015906121675750826001600160a01b0316846001600160a01b031614806127e457506127e484846115e7565b806121675750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160a01b03821661283757604051633250574960e11b81526000600482015260240161067d565b6000612845838360006119b4565b90506001600160a01b03811615610878576040516339e3563760e11b81526000600482015260240161067d565b6060600061287f83612913565b600101905060008167ffffffffffffffff81111561289f5761289f612bfd565b6040519080825280601f01601f1916602001820160405280156128c9576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846128d357509392505050565b6060610650838360006129eb565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106129525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061297e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061299c57662386f26fc10000830492506010015b6305f5e10083106129b4576305f5e100830492506008015b61271083106129c857612710830492506004015b606483106129da576064830492506002015b600a831061051c5760010192915050565b606081471015612a105760405163cd78605960e01b815230600482015260240161067d565b600080856001600160a01b03168486604051612a2c91906130c1565b60006040518083038185875af1925050503d8060008114612a69576040519150601f19603f3d011682016040523d82523d6000602084013e612a6e565b606091505b5091509150612a7e868383612a88565b9695505050505050565b606082612a9d57612a9882612ae4565b610650565b8151158015612ab457506001600160a01b0384163b155b15612add57604051639996b31560e01b81526001600160a01b038516600482015260240161067d565b5080610650565b805115612af45780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160e01b03198116811461165057600080fd5b600060208284031215612b3557600080fd5b813561065081612b0d565b60005b83811015612b5b578181015183820152602001612b43565b50506000910152565b60008151808452612b7c816020860160208601612b40565b601f01601f19169290920160200192915050565b6020815260006106506020830184612b64565b600060208284031215612bb557600080fd5b5035919050565b6001600160a01b038116811461165057600080fd5b60008060408385031215612be457600080fd5b8235612bef81612bbc565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612c3c57612c3c612bfd565b604052919050565b600067ffffffffffffffff821115612c5e57612c5e612bfd565b50601f01601f191660200190565b6000612c7f612c7a84612c44565b612c13565b9050828152838383011115612c9357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612cbb57600080fd5b61065083833560208501612c6c565b60008060408385031215612cdd57600080fd5b823567ffffffffffffffff80821115612cf557600080fd5b612d0186838701612caa565b93506020850135915080821115612d1757600080fd5b50612d2485828601612caa565b9150509250929050565b60008060408385031215612d4157600080fd5b8235612d4c81612bbc565b9150602083013567ffffffffffffffff811115612d6857600080fd5b612d2485828601612caa565b600080600060608486031215612d8957600080fd5b8335612d9481612bbc565b92506020840135612da481612bbc565b929592945050506040919091013590565b600060208284031215612dc757600080fd5b813567ffffffffffffffff811115612dde57600080fd5b61216784828501612caa565b600060208284031215612dfc57600080fd5b813561065081612bbc565b6020808252825182820181905260009190848201906040850190845b81811015612e485783516001600160a01b031683529284019291840191600101612e23565b50909695505050505050565b60008060408385031215612e6757600080fd5b823567ffffffffffffffff811115612e7e57600080fd5b612e8a85828601612caa565b95602094909401359450505050565b801515811461165057600080fd5b60008060408385031215612eba57600080fd5b8235612ec581612bbc565b91506020830135612ed581612e99565b809150509250929050565b60008060008060808587031215612ef657600080fd5b8435612f0181612bbc565b93506020850135612f1181612bbc565b925060408501359150606085013567ffffffffffffffff811115612f3457600080fd5b8501601f81018713612f4557600080fd5b612f5487823560208401612c6c565b91505092959194509250565b600080600060408486031215612f7557600080fd5b833567ffffffffffffffff80821115612f8d57600080fd5b612f9987838801612caa565b94506020860135915080821115612faf57600080fd5b818601915086601f830112612fc357600080fd5b813581811115612fd257600080fd5b876020828501011115612fe457600080fd5b6020830194508093505050509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561304c57603f1988860301845261303a858351612b64565b9450928501929085019060010161301e565b5092979650505050505050565b6000806040838503121561306c57600080fd5b823561307781612bbc565b91506020830135612ed581612bbc565b600181811c9082168061309b57607f821691505b6020821081036130bb57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516130d3818460208701612b40565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761051c5761051c6130dd565b634e487b7160e01b600052603260045260246000fd5b8082018082111561051c5761051c6130dd565b60006020828403121561314557600080fd5b815167ffffffffffffffff81111561315c57600080fd5b8201601f8101841361316d57600080fd5b805161317b612c7a82612c44565b81815285602083850101111561319057600080fd5b6131a1826020830160208601612b40565b95945050505050565b6000600182016131bc576131bc6130dd565b5060010190565b6000816131d2576131d26130dd565b506000190190565b601f82111561087857600081815260208120601f850160051c810160208610156132015750805b601f850160051c820191505b81811015610c0f5782815560010161320d565b815167ffffffffffffffff81111561323a5761323a612bfd565b61324e816132488454613087565b846131da565b602080601f831160018114613283576000841561326b5750858301515b600019600386901b1c1916600185901b178555610c0f565b600085815260208120601f198616915b828110156132b257888601518255948401946001909101908401613293565b50858210156132d05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156132f257600080fd5b815161065081612bbc565b8183823760009101908152919050565b60006020828403121561331f57600080fd5b815161065081612e99565b60006020828403121561333c57600080fd5b5051919050565b6080815260006133566080830188612b64565b82810360208401526133688188612b64565b90508281036040840152848152848660208301376000602086830101526020601f19601f8701168201019150508260608301529695505050505050565b6060815260006133b86060830186612b64565b82810360208401526133ca8186612b64565b915050826040830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612a7e90830184612b64565b60006020828403121561342057600080fd5b815161065081612b0d565b6000835161343d818460208801612b40565b835190830190613451818360208801612b40565b0194935050505056fea26469706673582212200382d6ef1ec923aa7d12bed6ce617c1ac6f5b485db644706ed3ee6d47ebf792064736f6c63430008150033000000000000000000000000879b1c671ad668f24fc4d86a73427ed2379a52df0000000000000000000000008e1362508817c2bc40be1b7254a83daedc7af2f5