60806040523480156200001157600080fd5b5060405162003d4838038062003d488339810160408190526200003491620001a2565b816200004081620000c2565b5060006200004d620000db565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b0319166001600160a01b039290921691909117905550620002d9565b8051620000d7906002906020840190620000df565b5050565b3390565b828054620000ed9062000286565b90600052602060002090601f0160209004810192826200011157600085556200015c565b82601f106200012c57805160ff19168380011785556200015c565b828001600101855582156200015c579182015b828111156200015c5782518255916020019190600101906200013f565b506200016a9291506200016e565b5090565b5b808211156200016a57600081556001016200016f565b80516001600160a01b03811681146200019d57600080fd5b919050565b60008060408385031215620001b5578182fd5b82516001600160401b0380821115620001cc578384fd5b818501915085601f830112620001e0578384fd5b815181811115620001f557620001f5620002c3565b6040516020601f8301601f19168201810184811183821017156200021d576200021d620002c3565b604052828252848301810189101562000234578687fd5b8693505b8284101562000257578484018101518285018201529283019262000238565b828411156200026857868184840101525b8196506200027881890162000185565b955050505050509250929050565b6002810460018216806200029b57607f821691505b60208210811415620002bd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b613a5f80620002e96000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c80639eb0e9651161011a578063d5adf5b0116100ad578063ebc9297a1161007c578063ebc9297a1461045b578063f07723771461046e578063f23a6e6114610490578063f242432a146104a3578063f2fde38b146104b6576101fa565b8063d5adf5b014610408578063d73fe0aa1461041b578063d96a094a14610435578063e985e9c514610448576101fa565b8063bc197c81116100e9578063bc197c81146103af578063bd94b005146103cf578063ce7c2ac2146103e2578063d212081f146103f5576101fa565b80639eb0e9651461034f578063a22cb46514610357578063a2fb11751461036a578063b23e97a21461038d576101fa565b80634e1273f411610192578063829f46be11610161578063829f46be146103195780638453d1ef146103215780638da5cb5b14610334578063949a4a4a1461033c576101fa565b80634e1273f4146102cb5780634f420151146102eb5780635622de81146102fe578063715018a614610311576101fa565b80632eb2c2d6116101ce5780632eb2c2d61461027d5780633083110d1461029057806338c3a23f146102a35780634b57b0be146102b6576101fa565b8062fdd58e146101ff57806301ffc9a7146102285780630e89341c146102485780631d0c6f5214610268575b600080fd5b61021261020d366004612c74565b6104c9565b60405161021f919061378f565b60405180910390f35b61023b610236366004612ea9565b610520565b60405161021f91906131e1565b61025b610256366004612ee1565b610566565b60405161021f9190613201565b61027b6102763660046128fd565b6105fa565b005b61027b61028b366004612a12565b61065b565b61027b61029e366004612d4c565b6108c1565b61027b6102b13660046128fd565b610969565b6102be6109ca565b60405161021f9190612fdf565b6102de6102d9366004612d86565b6109d9565b60405161021f91906131a0565b61027b6102f93660046128fd565b610af8565b61027b61030c366004612f11565b610c30565b61027b610cec565b6102be610d75565b61027b61032f3660046128fd565b610d84565b6102be610de5565b61027b61034a366004612ee1565b610df5565b6102be610f1a565b61027b610365366004612c47565b610f29565b61037d610378366004612ee1565b610ff7565b60405161021f949392919061310d565b6103a061039b366004612c74565b61102d565b60405161021f939291906137a6565b6103c26103bd366004612958565b61106f565b60405161021f91906131ec565b61027b6103dd366004612ee1565b611083565b6102126103f03660046128fd565b6111b7565b61027b610403366004612de6565b6111c9565b61027b610416366004612c9f565b6112c4565b6104236114e6565b60405161021f96959493929190612ff3565b61027b610443366004612ee1565b611519565b61023b610456366004612920565b61165e565b61027b610469366004612b9a565b61168c565b61048161047c366004612ee1565b6117bb565b60405161021f9392919061317f565b6103c261049e366004612abb565b6117e6565b61027b6104b1366004612b34565b6117f8565b61027b6104c43660046128fd565b61198e565b60006001600160a01b0383166104fa5760405162461bcd60e51b81526004016104f1906132f7565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061055157506001600160e01b031982166303a24d0760e21b145b80610560575061056082611a4f565b92915050565b6060600280546105759061389e565b80601f01602080910402602001604051908101604052809291908181526020018280546105a19061389e565b80156105ee5780601f106105c3576101008083540402835291602001916105ee565b820191906000526020600020905b8154815290600101906020018083116105d157829003601f168201915b50505050509050919050565b610602611a68565b6001600160a01b0316610613610de5565b6001600160a01b0316146106395760405162461bcd60e51b81526004016104f19061358f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b815183511461067c5760405162461bcd60e51b81526004016104f190613706565b6001600160a01b0384166106a25760405162461bcd60e51b81526004016104f1906134ae565b6106aa611a68565b6001600160a01b0316856001600160a01b031614806106d057506106d085610456611a68565b6106ec5760405162461bcd60e51b81526004016104f1906134f3565b60006106f6611a68565b90506107068187878787876108b9565b60005b845181101561085357600085828151811061073457634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061076057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107b05760405162461bcd60e51b81526004016104f190613545565b6107ba8282613887565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546108389190613830565b925050819055505050508061084c906138fc565b9050610709565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516108a39291906131b3565b60405180910390a46108b9818787878787611a6c565b505050505050565b6108c9611a68565b6001600160a01b03166108da610de5565b6001600160a01b0316146109005760405162461bcd60e51b81526004016104f19061358f565b61090c84848484611b7a565b6109288484600160405180602001604052806000815250611c05565b7f077cb84521c78911f04e548e39ee6b29107f227a517df9f17f368c289959767684848460405161095b9392919061317f565b60405180910390a150505050565b610971611a68565b6001600160a01b0316610982610de5565b6001600160a01b0316146109a85760405162461bcd60e51b81526004016104f19061358f565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b031681565b606081518351146109fc5760405162461bcd60e51b81526004016104f1906136bd565b600083516001600160401b03811115610a2557634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a4e578160200160208202803683370190505b50905060005b8451811015610af057610ab5858281518110610a8057634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610aa857634e487b7160e01b600052603260045260246000fd5b60200260200101516104c9565b828281518110610ad557634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610ae9816138fc565b9050610a54565b509392505050565b610b00611a68565b6001600160a01b0316610b11610de5565b6001600160a01b031614610b375760405162461bcd60e51b81526004016104f19061358f565b6040516370a0823160e01b81526001600160a01b0382169063a9059cbb90339083906370a0823190610b6d903090600401612fdf565b60206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190612ef9565b6040518363ffffffff1660e01b8152600401610bda9291906130f4565b602060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190612e8d565b5050565b6000848152600c60209081526040808320600180820188905560028201805483546001600160a01b0319166001600160a01b038a8116919091179094556001600160a81b0319166101009388169390930292909217909155600d835281842081018790558151928301909152918152610cae91339130918891611ce5565b610cb9828585611d0b565b7fce721562569238afca78659c841163f0681a7f98530edf77bd574603095d3a1382848660405161095b9392919061317f565b610cf4611a68565b6001600160a01b0316610d05610de5565b6001600160a01b031614610d2b5760405162461bcd60e51b81526004016104f19061358f565b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b6010546001600160a01b031681565b610d8c611a68565b6001600160a01b0316610d9d610de5565b6001600160a01b031614610dc35760405162461bcd60e51b81526004016104f19061358f565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03165b90565b6000818152600d6020526040902060020154610e235760405162461bcd60e51b81526004016104f1906132b0565b6000818152600d60205260409081902060020154600e5491516367a09c2360e01b815290916001600160a01b0316906367a09c2390610e6890339085906004016130f4565b602060405180830381600087803b158015610e8257600080fd5b505af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190612e8d565b50610ed8303384600160405180602001604052806000815250611ce5565b7fcdd42d836b0169e3b8ba5c58c0e260c87772b2b5bed52bc32d8fbcd3210a63c63383600284604051610f0e9493929190613138565b60405180910390a15050565b600e546001600160a01b031681565b816001600160a01b0316610f3b611a68565b6001600160a01b03161415610f625760405162461bcd60e51b81526004016104f190613674565b8060016000610f6f611a68565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610fb3611a68565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610feb91906131e1565b60405180910390a35050565b600c602052600090815260409020805460018201546002909201546001600160a01b03918216929160ff82169161010090041684565b600b602052816000526040600020818154811061104957600080fd5b600091825260209091206003909102018054600182015460029092015490935090915083565b63bc197c8160e01b98975050505050505050565b6000818152600d60205260409020546001600160a01b031633146110b95760405162461bcd60e51b81526004016104f1906135c4565b6000818152600c602052604090206002015460ff16156110eb5760405162461bcd60e51b81526004016104f190613477565b6000818152600c602052604090206002015461010090046001600160a01b03166111275760405162461bcd60e51b81526004016104f1906133bf565b6000818152600c6020908152604080832080546001600160a01b03191681556001808201859055600290910180546001600160a81b0319169055815192830190915291815261117b91309133918591611ce5565b7fc9b961c43fe701b83ae14bfe2d7625ea85b27c33b4aae8d1fdf4b344d5ea1dbc33826040516111ac9291906130f4565b60405180910390a150565b600a6020526000908152604090205481565b825184511480156111db575081518451145b6111f75760405162461bcd60e51b81526004016104f190613388565b60005b84518110156112bd576112ab85828151811061122657634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061124e57634e487b7160e01b600052603260045260246000fd5b602002602001015185848151811061127657634e487b7160e01b600052603260045260246000fd5b602002602001015185858151811061129e57634e487b7160e01b600052603260045260246000fd5b6020026020010151610c30565b806112b5816138fc565b9150506111fa565b5050505050565b8a600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082600860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000208190555087600a60008b6001600160a01b03166001600160a01b031681526020019081526020016000208190555085600a6000896001600160a01b03166001600160a01b031681526020019081526020016000208190555080600a6000600960009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555083600a6000876001600160a01b03166001600160a01b031681526020019081526020016000208190555081600a6000856001600160a01b03166001600160a01b03168152602001908152602001600020819055507f186aa1ba35177b9624b04765010bf0fa97e3d3c0e1d4032ca74037b7f7d3427d8a89888786866040516114d1969594939291906137bc565b60405180910390a15050505050505050505050565b6004546006546005546007546008546009546001600160a01b039586169694861695938416949284169391821692911690565b6000818152600d60205260409020600101546115475760405162461bcd60e51b81526004016104f190613432565b6000818152600c602052604081205481906001600160a01b0316156115a15750506000818152600c602052604090206001808201546002909201805460ff19169091179081905561010090046001600160a01b03166115c2565b50506000818152600d60205260409020600181015490546001600160a01b03165b600f546115dd90339030906001600160a01b03168585611d6d565b6115fa303385600160405180602001604052806000815250611ce5565b6000838152600d60205260409081902080546001600160a01b0319163390811790915590517fcdd42d836b0169e3b8ba5c58c0e260c87772b2b5bed52bc32d8fbcd3210a63c6916116519186906001908790613138565b60405180910390a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b611694611a68565b6001600160a01b03166116a5610de5565b6001600160a01b0316146116cb5760405162461bcd60e51b81526004016104f19061358f565b82518451146116ec5760405162461bcd60e51b81526004016104f19061360d565b60005b84518162ffffff16101561179f5761178d86868362ffffff168151811061172657634e487b7160e01b600052603260045260246000fd5b6020026020010151868462ffffff168151811061175357634e487b7160e01b600052603260045260246000fd5b6020026020010151868562ffffff168151811061178057634e487b7160e01b600052603260045260246000fd5b6020026020010151611b7a565b80611797816138d9565b9150506116ef565b506112bd8585836040518060200160405280600081525061230d565b600d602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b63f23a6e6160e01b9695505050505050565b6001600160a01b03841661181e5760405162461bcd60e51b81526004016104f1906134ae565b611826611a68565b6001600160a01b0316856001600160a01b0316148061184c575061184c85610456611a68565b6118685760405162461bcd60e51b81526004016104f1906133e9565b6000611872611a68565b90506118928187876118838861248e565b61188c8861248e565b876108b9565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156118d35760405162461bcd60e51b81526004016104f190613545565b6118dd8482613887565b6000868152602081815260408083206001600160a01b038c81168552925280832093909355881681529081208054869290611919908490613830565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161196f929190613798565b60405180910390a46119858288888888886124e7565b50505050505050565b611996611a68565b6001600160a01b03166119a7610de5565b6001600160a01b0316146119cd5760405162461bcd60e51b81526004016104f19061358f565b6001600160a01b0381166119f35760405162461bcd60e51b81526004016104f190613342565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b611a7e846001600160a01b03166125b8565b156108b95760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611ab7908990899088908890889060040161302d565b602060405180830381600087803b158015611ad157600080fd5b505af1925050508015611b01575060408051601f3d908101601f19168201909252611afe91810190612ec5565b60015b611b4a57611b0d613949565b80611b185750611b32565b8060405162461bcd60e51b81526004016104f19190613201565b60405162461bcd60e51b81526004016104f190613214565b6001600160e01b0319811663bc197c8160e01b146119855760405162461bcd60e51b81526004016104f190613268565b6000838152600d60205260409020546001600160a01b031615611baf5760405162461bcd60e51b81526004016104f190613644565b604080516060810182526001600160a01b03958616815260208082019485528183019384526000958652600d90529320925183546001600160a01b03191694169390931782555160018201559051600290910155565b6001600160a01b038416611c2b5760405162461bcd60e51b81526004016104f19061374e565b6000611c35611a68565b9050611c47816000876118838861248e565b6000848152602081815260408083206001600160a01b038916845290915281208054859290611c77908490613830565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611cce929190613798565b60405180910390a46112bd816000878787876124e7565b6001600160a01b0384166118685760405162461bcd60e51b81526004016104f1906134ae565b611d1361271c565b91825260208083019182524260408085019182526001600160a01b039095166000908152600b8352948520805460018181018355918752929095209351600390920290930190815590519281019290925551600290910155565b6000611d78836125be565b6040516323b872dd60e01b81529091506001600160a01b038516906323b872dd90611dab9089908990889060040161308b565b602060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfd9190612e8d565b506004546001600160a01b031615611ebf576004546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb9190606490611e449088613868565b611e4e9190613848565b6040518363ffffffff1660e01b8152600401611e6b9291906130f4565b602060405180830381600087803b158015611e8557600080fd5b505af1158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd9190612e8d565b505b6006546001600160a01b031615611f80576006546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb9190606490611f059088613868565b611f0f9190613848565b6040518363ffffffff1660e01b8152600401611f2c9291906130f4565b602060405180830381600087803b158015611f4657600080fd5b505af1158015611f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7e9190612e8d565b505b6005546001600160a01b031615612041576005546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb9190606490611fc69088613868565b611fd09190613848565b6040518363ffffffff1660e01b8152600401611fed9291906130f4565b602060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190612e8d565b505b6007546001600160a01b031615612102576007546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb91906064906120879088613868565b6120919190613848565b6040518363ffffffff1660e01b81526004016120ae9291906130f4565b602060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121009190612e8d565b505b6008546001600160a01b0316156121c3576008546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb91906064906121489088613868565b6121529190613848565b6040518363ffffffff1660e01b815260040161216f9291906130f4565b602060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c19190612e8d565b505b6009546001600160a01b031615612284576009546001600160a01b039081166000818152600a60205260409020549186169163a9059cbb91906064906122099088613868565b6122139190613848565b6040518363ffffffff1660e01b81526004016122309291906130f4565b602060405180830381600087803b15801561224a57600080fd5b505af115801561225e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122829190612e8d565b505b6001600160a01b03841663a9059cbb8361229e8487613887565b6040518363ffffffff1660e01b81526004016122bb9291906130f4565b602060405180830381600087803b1580156122d557600080fd5b505af11580156122e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119859190612e8d565b6001600160a01b0384166123335760405162461bcd60e51b81526004016104f19061374e565b81518351146123545760405162461bcd60e51b81526004016104f190613706565b600061235e611a68565b905061236f816000878787876108b9565b60005b84518110156124265783818151811061239b57634e487b7160e01b600052603260045260246000fd5b60200260200101516000808784815181106123c657634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461240e9190613830565b9091555081905061241e816138fc565b915050612372565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516124779291906131b3565b60405180910390a46112bd81600087878787611a6c565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106124d657634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6124f9846001600160a01b03166125b8565b156108b95760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061253290899089908890889088906004016130af565b602060405180830381600087803b15801561254c57600080fd5b505af192505050801561257c575060408051601f3d908101601f1916820190925261257991810190612ec5565b60015b61258857611b0d613949565b6001600160e01b0319811663f23a6e6160e01b146119855760405162461bcd60e51b81526004016104f190613268565b3b151590565b6009546001600160a01b03166000908152600a60205260408120546064906125e69084613868565b6125f09190613848565b6008546001600160a01b03166000908152600a60205260409020546064906126189085613868565b6126229190613848565b6007546001600160a01b03166000908152600a602052604090205460649061264a9086613868565b6126549190613848565b6005546001600160a01b03166000908152600a602052604090205460649061267c9087613868565b6126869190613848565b6006546001600160a01b03166000908152600a60205260409020546064906126ae9088613868565b6126b89190613848565b6004546001600160a01b03166000908152600a60205260409020546064906126e09089613868565b6126ea9190613848565b6126f49190613830565b6126fe9190613830565b6127089190613830565b6127129190613830565b6105609190613830565b60405180606001604052806000815260200160008152602001600081525090565b600082601f83011261274d578081fd5b8135602061276261275d8361380d565b6137e4565b828152818101908583018385028701840188101561277e578586fd5b855b858110156127a5578135612793816139ed565b84529284019290840190600101612780565b5090979650505050505050565b60008083601f8401126127c3578182fd5b5081356001600160401b038111156127d9578182fd5b60208301915083602080830285010111156127f357600080fd5b9250929050565b600082601f83011261280a578081fd5b8135602061281a61275d8361380d565b8281528181019085830183850287018401881015612836578586fd5b855b858110156127a557813584529284019290840190600101612838565b60008083601f840112612865578182fd5b5081356001600160401b0381111561287b578182fd5b6020830191508360208285010111156127f357600080fd5b600082601f8301126128a3578081fd5b81356001600160401b038111156128bc576128bc61392d565b6128cf601f8201601f19166020016137e4565b8181528460208386010111156128e3578283fd5b816020850160208301379081016020019190915292915050565b60006020828403121561290e578081fd5b8135612919816139ed565b9392505050565b60008060408385031215612932578081fd5b823561293d816139ed565b9150602083013561294d816139ed565b809150509250929050565b60008060008060008060008060a0898b031215612973578384fd5b883561297e816139ed565b9750602089013561298e816139ed565b965060408901356001600160401b03808211156129a9578586fd5b6129b58c838d016127b2565b909850965060608b01359150808211156129cd578586fd5b6129d98c838d016127b2565b909650945060808b01359150808211156129f1578384fd5b506129fe8b828c01612854565b999c989b5096995094979396929594505050565b600080600080600060a08688031215612a29578081fd5b8535612a34816139ed565b94506020860135612a44816139ed565b935060408601356001600160401b0380821115612a5f578283fd5b612a6b89838a016127fa565b94506060880135915080821115612a80578283fd5b612a8c89838a016127fa565b93506080880135915080821115612aa1578283fd5b50612aae88828901612893565b9150509295509295909350565b60008060008060008060a08789031215612ad3578182fd5b8635612ade816139ed565b95506020870135612aee816139ed565b9450604087013593506060870135925060808701356001600160401b03811115612b16578283fd5b612b2289828a01612854565b979a9699509497509295939492505050565b600080600080600060a08688031215612b4b578283fd5b8535612b56816139ed565b94506020860135612b66816139ed565b9350604086013592506060860135915060808601356001600160401b03811115612b8e578182fd5b612aae88828901612893565b600080600080600060a08688031215612bb1578283fd5b8535612bbc816139ed565b945060208601356001600160401b0380821115612bd7578485fd5b612be389838a016127fa565b95506040880135915080821115612bf8578485fd5b612c0489838a016127fa565b94506060880135915080821115612c19578283fd5b612c2589838a016127fa565b93506080880135915080821115612c3a578283fd5b50612aae888289016127fa565b60008060408385031215612c59578182fd5b8235612c64816139ed565b9150602083013561294d81613a05565b60008060408385031215612c86578182fd5b8235612c91816139ed565b946020939093013593505050565b60008060008060008060008060008060006101608c8e031215612cc0578485fd5b8b35612ccb816139ed565b9a5060208c0135995060408c0135612ce2816139ed565b985060608c0135975060808c0135612cf9816139ed565b965060a08c0135955060c08c0135612d10816139ed565b945060e08c013593506101008c0135612d28816139ed565b809350506101208c013591506101408c013590509295989b509295989b9093969950565b60008060008060808587031215612d61578182fd5b8435612d6c816139ed565b966020860135965060408601359560600135945092505050565b60008060408385031215612d98578182fd5b82356001600160401b0380821115612dae578384fd5b612dba8683870161273d565b93506020850135915080821115612dcf578283fd5b50612ddc858286016127fa565b9150509250929050565b60008060008060808587031215612dfb578182fd5b84356001600160401b0380821115612e11578384fd5b612e1d888389016127fa565b95506020870135915080821115612e32578384fd5b612e3e888389016127fa565b94506040870135915080821115612e53578384fd5b612e5f8883890161273d565b93506060870135915080821115612e74578283fd5b50612e818782880161273d565b91505092959194509250565b600060208284031215612e9e578081fd5b815161291981613a05565b600060208284031215612eba578081fd5b813561291981613a13565b600060208284031215612ed6578081fd5b815161291981613a13565b600060208284031215612ef2578081fd5b5035919050565b600060208284031215612f0a578081fd5b5051919050565b60008060008060808587031215612f26578182fd5b84359350602085013592506040850135612f3f816139ed565b91506060850135612f4f816139ed565b939692955090935050565b6000815180845260208085019450808401835b83811015612f8957815187529582019590820190600101612f6d565b509495945050505050565b60008151808452815b81811015612fb957602081850181015186830182015201612f9d565b81811115612fca5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0396871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b6001600160a01b0386811682528516602082015260a06040820181905260009061305990830186612f5a565b828103606084015261306b8186612f5a565b9050828103608084015261307f8185612f94565b98975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906130e990830184612f94565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03948516815260208101939093529015156040830152909116606082015260800190565b6001600160a01b038516815260208101849052608081016003841061316d57634e487b7160e01b600052602160045260246000fd5b60408201939093526060015292915050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000602082526129196020830184612f5a565b6000604082526131c66040830185612f5a565b82810360208401526131d88185612f5a565b95945050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b6000602082526129196020830184612f94565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526027908201527f54686973206361726420646f6573206e6f7420686176652073616c65206f6e2060408201526673746f6e65732160c81b606082015260800190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601a908201527f57696e6e657273206172656e277420636f6e73697374656e7421000000000000604082015260600190565b60208082526010908201526f5468657265206973206e6f2073616c6560801b604082015260600190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526025908201527f54686973206361726420646f6573206e6f7420686176652073616c65206f6e20604082015264776574682160d81b606082015260800190565b60208082526018908201527f4361726420616c7265616479207472616e736665727265640000000000000000604082015260600190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f746869732063617264206973206e6f7420796f75727320746f2063616e63656c604082015268207468652073616c6560b81b606082015260800190565b60208082526018908201527f4361726473206172656e277420636f6e73697374656e74210000000000000000604082015260600190565b6020808252601690820152754361726420696420616c72656164792065786973747360501b604082015260600190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b6040518181016001600160401b03811182821017156138055761380561392d565b604052919050565b60006001600160401b038211156138265761382661392d565b5060209081020190565b6000821982111561384357613843613917565b500190565b60008261386357634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561388257613882613917565b500290565b60008282101561389957613899613917565b500390565b6002810460018216806138b257607f821691505b602082108114156138d357634e487b7160e01b600052602260045260246000fd5b50919050565b600062ffffff808316818114156138f2576138f2613917565b6001019392505050565b600060001982141561391057613910613917565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d101561395957610df2565b600481823e6308c379a061396d8251613943565b1461397757610df2565b6040513d600319016004823e80513d6001600160401b0381602484011181841117156139a65750505050610df2565b828401925082519150808211156139c05750505050610df2565b503d830160208284010111156139d857505050610df2565b601f01601f1916810160200160405291505090565b6001600160a01b0381168114613a0257600080fd5b50565b8015158114613a0257600080fd5b6001600160e01b031981168114613a0257600080fdfea2646970667358221220ef39596cbf9a5a118484a9821587eacd8d24d99e5d7419f657abcfc370a6b49e64736f6c634300080000330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000fbc3b76a206f03f1edbf411f280444cd3fd9c7c8000000000000000000000000000000000000000000000000000000000000003f697066733a2f2f516d615a4a79376f6e7133447a676d55615764724563677a5a713533677453624863735a70326e6e774a596635372f7b69647d2e6a736f6e00