60806040523480156200001157600080fd5b50604051620037de380380620037de833981016040819052620000349162000198565b8162000040816200006f565b506200004c3362000081565b600580546001018155600052600462000066828262000291565b5050506200035d565b60026200007d828262000291565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000fb57600080fd5b81516001600160401b0380821115620001185762000118620000d3565b604051601f8301601f19908116603f01168101908282118183101715620001435762000143620000d3565b816040528381526020925086838588010111156200016057600080fd5b600091505b8382101562000184578582018301518183018401529082019062000165565b600093810190920192909252949350505050565b60008060408385031215620001ac57600080fd5b82516001600160401b0380821115620001c457600080fd5b620001d286838701620000e9565b93506020850151915080821115620001e957600080fd5b50620001f885828601620000e9565b9150509250929050565b600181811c908216806200021757607f821691505b6020821081036200023857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028c57600081815260208120601f850160051c81016020861015620002675750805b601f850160051c820191505b81811015620002885782815560010162000273565b5050505b505050565b81516001600160401b03811115620002ad57620002ad620000d3565b620002c581620002be845462000202565b846200023e565b602080601f831160018114620002fd5760008415620002e45750858301515b600019600386901b1c1916600185901b17855562000288565b600085815260208120601f198616915b828110156200032e578886015182559484019460019091019084016200030d565b50858210156200034d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613471806200036d6000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c8063836527be116100f9578063bd85b03911610097578063e8a3d48511610071578063e8a3d48514610419578063e985e9c514610421578063f242432a1461045d578063f2fde38b1461047057600080fd5b8063bd85b039146103dd578063d9ce2f6d146103f0578063e4b50cb8146103f857600080fd5b8063938e3d7b116100d3578063938e3d7b1461036b57806395d89b411461037e578063a22cb465146103b7578063b390c0ab146103ca57600080fd5b8063836527be1461032a57806383ca4b6f1461033d5780638da5cb5b1461035057600080fd5b8063156e29f611610166578063571286831161014057806357128683146102e75780635fa82826146102fa5780636ff97f1d1461030d578063715018a61461032257600080fd5b8063156e29f6146102a15780632eb2c2d6146102b45780634e1273f4146102c757600080fd5b806302fe5305116101a257806302fe53051461022657806306fdde03146102395780630c05bf6c1461027b5780630e89341c1461028e57600080fd5b8062fdd58e146101c85780630118fa49146101ee57806301ffc9a714610203575b600080fd5b6101db6101d63660046127f0565b610483565b6040519081526020015b60405180910390f35b6102016101fc3660046128ea565b61052f565b005b61021661021136600461295f565b61070b565b60405190151581526020016101e5565b610201610234366004612983565b6107ee565b60408051808201909152601981527f4d7920496d6167696e617279204974656d73206279204b61690000000000000060208201525b6040516101e59190612a10565b6102016102893660046128ea565b61083b565b61026e61029c366004612a23565b6108f7565b6102016102af366004612a3c565b6109be565b6102016102c2366004612b04565b610aa2565b6102da6102d5366004612bae565b610b44565b6040516101e59190612caa565b6102016102f5366004612d09565b610c82565b610201610308366004612da3565b610de5565b610315610e76565b6040516101e59190612dbe565b610201610f02565b610201610338366004612da3565b610f16565b61020161034b366004612e2a565b610fab565b6003546040516001600160a01b0390911681526020016101e5565b610201610379366004612983565b61101f565b60408051808201909152600681527f49464954454d0000000000000000000000000000000000000000000000000000602082015261026e565b6102016103c5366004612e96565b611037565b6102016103d8366004612ed2565b611042565b6101db6103eb366004612a23565b61109d565b61026e6110fa565b61040b610406366004612a23565b611188565b6040516101e5929190612ef4565b61026e6112f0565b61021661042f366004612f2d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61020161046b366004612f60565b611382565b61020161047e366004612da3565b61141d565b60006001600160a01b0383166105065760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b6105376114ad565b600082116105875760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016104fd565b60008151116105d85760405162461bcd60e51b815260206004820152601060248201527f696e76616c69642069706673686173680000000000000000000000000000000060448201526064016104fd565b60058054604080518082018252600080825242600f81900b6020808501918252600187018855968352835190516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116177f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db086015584825260069095529190912091929161066c8582613058565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b610698856108f7565b6040516106a59190612a10565b60405180910390a26106c833848760405180602001604052806000815250611507565b60408051848152600f84900b60208201527f3aca97d999191921736446fc699e564b11e97b386433359350a34b62d469f9fa910160405180910390a15050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061079e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061052957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610529565b6107f66114ad565b6107ff816115f0565b60007f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516108309190612a10565b60405180910390a250565b6108436114ad565b8161084d816115fc565b6108995760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016104fd565b60008381526006602052604090206108b18382613058565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b6108dd856108f7565b6040516108ea9190612a10565b60405180910390a2505050565b606081610903816115fc565b61094f5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016104fd565b6000838152600660205260409020805461096890612fc5565b1590506109ac576109788361164a565b600084815260066020908152604091829020915161099893929101613118565b6040516020818303038152906040526109b5565b6109b58361164a565b91505b50919050565b3360009081526007602052604090205460ff16806109e657506003546001600160a01b031633145b610a325760405162461bcd60e51b815260206004820152601160248201527f63616c6c6572206e6f74206d696e74657200000000000000000000000000000060448201526064016104fd565b60008111610a825760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016104fd565b610a9d83838360405180602001604052806000815250611507565b505050565b6001600160a01b038516331480610abe5750610abe853361042f565b610b305760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016104fd565b610b3d85858585856116de565b5050505050565b60608151835114610bbd5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016104fd565b6000835167ffffffffffffffff811115610bd957610bd961281a565b604051908082528060200260200182016040528015610c02578160200160208202803683370190505b50905060005b8451811015610c7a57610c4d858281518110610c2657610c266131d0565b6020026020010151858381518110610c4057610c406131d0565b6020026020010151610483565b828281518110610c5f57610c5f6131d0565b6020908102919091010152610c738161322e565b9050610c08565b509392505050565b3360009081526007602052604090205460ff1680610caa57506003546001600160a01b031633145b610cf65760405162461bcd60e51b815260206004820152601160248201527f63616c6c6572206e6f74206d696e74657200000000000000000000000000000060448201526064016104fd565b8481148015610d0457508483145b610d505760405162461bcd60e51b815260206004820152600d60248201527f64617461206d69736d617463680000000000000000000000000000000000000060448201526064016104fd565b60005b85811015610ddc57610dcc878783818110610d7057610d706131d0565b9050602002016020810190610d859190612da3565b868684818110610d9757610d976131d0565b90506020020135858585818110610db057610db06131d0565b9050602002013560405180602001604052806000815250611507565b610dd58161322e565b9050610d53565b50505050505050565b610ded6114ad565b6001600160a01b03811660009081526007602052604090205460ff16610e555760405162461bcd60e51b815260206004820152601660248201527f61646472657373206e6f7420726567697374657265640000000000000000000060448201526064016104fd565b6001600160a01b03166000908152600760205260409020805460ff19169055565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610ef957600084815260209081902060408051808201909152908401546fffffffffffffffffffffffffffffffff811682527001000000000000000000000000000000009004600f0b81830152825260019092019101610e9a565b50505050905090565b610f0a6114ad565b610f14600061197c565b565b610f1e6114ad565b6001600160a01b03811660009081526007602052604090205460ff1615610f875760405162461bcd60e51b815260206004820152601a60248201527f6164647265737320616c7265616479207265676973746572656400000000000060448201526064016104fd565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b61101933858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506119e692505050565b50505050565b6110276114ad565b60046110338282613058565b5050565b611033338383611ae6565b600081116110925760405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016104fd565b611033338383611bda565b60055460009082106110b05760006110e2565b600582815481106110c3576110c36131d0565b6000918252602090912001546fffffffffffffffffffffffffffffffff165b6fffffffffffffffffffffffffffffffff1692915050565b6004805461110790612fc5565b80601f016020809104026020016040519081016040528092919081815260200182805461113390612fc5565b80156111805780601f1061115557610100808354040283529160200191611180565b820191906000526020600020905b81548152906001019060200180831161116357829003601f168201915b505050505081565b60408051808201909152600080825260208201526060826111a8816115fc565b6111f45760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016104fd565b60058481548110611207576112076131d0565b600091825260208083208784526006825260409384902084518086019095529201546fffffffffffffffffffffffffffffffff811684527001000000000000000000000000000000009004600f0b908301528054819061126690612fc5565b80601f016020809104026020016040519081016040528092919081815260200182805461129290612fc5565b80156112df5780601f106112b4576101008083540402835291602001916112df565b820191906000526020600020905b8154815290600101906020018083116112c257829003601f168201915b505050505090509250925050915091565b6060600480546112ff90612fc5565b80601f016020809104026020016040519081016040528092919081815260200182805461132b90612fc5565b80156113785780601f1061134d57610100808354040283529160200191611378565b820191906000526020600020905b81548152906001019060200180831161135b57829003601f168201915b5050505050905090565b6001600160a01b03851633148061139e575061139e853361042f565b6114105760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016104fd565b610b3d8585858585611cf3565b6114256114ad565b6001600160a01b0381166114a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104fd565b6114aa8161197c565b50565b6003546001600160a01b03163314610f145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104fd565b82611511816115fc565b61155d5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016104fd565b61156985858585611ec9565b8267ffffffffffffffff1660058581548110611587576115876131d0565b6000918252602082200180549091906115b39084906fffffffffffffffffffffffffffffffff16613248565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b60026110338282613058565b600554600090821080156105295750600060058381548110611620576116206131d0565b6000918252602090912001547001000000000000000000000000000000009004600f0b1392915050565b60606002805461165990612fc5565b80601f016020809104026020016040519081016040528092919081815260200182805461168590612fc5565b80156116d25780601f106116a7576101008083540402835291602001916116d2565b820191906000526020600020905b8154815290600101906020018083116116b557829003601f168201915b50505050509050919050565b81518351146117555760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016104fd565b6001600160a01b0384166117d15760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b3360005b845181101561190e5760008582815181106117f2576117f26131d0565b602002602001015190506000858381518110611810576118106131d0565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156118b65760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016104fd565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906118f3908490613278565b92505081905550505050806119079061322e565b90506117d5565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161195e92919061328b565b60405180910390a4611974818787878787611ff0565b505050505050565b600380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6119f18383836121f4565b60005b8251811015611aaa576000838281518110611a1157611a116131d0565b60200260200101519050828281518110611a2d57611a2d6131d0565b602002602001015167ffffffffffffffff1660058281548110611a5257611a526131d0565b600091825260209091200180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff9182169390930316919091179055506001016119f4565b50826001600160a01b03167fc654fa60d2a625ee021b1ac30960810e81f72997250f9fe91c3c443690c47cdf83836040516108ea92919061328b565b816001600160a01b0316836001600160a01b031603611b6d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016104fd565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b81611be4816115fc565b611c305760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064016104fd565b611c3b84848461247f565b8167ffffffffffffffff1660058481548110611c5957611c596131d0565b60009182526020918290200180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff918216949094031692909217909155604080518581529182018490526001600160a01b038616917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a250505050565b6001600160a01b038416611d6f5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b336000611d7b8561262e565b90506000611d888561262e565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015611e215760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016104fd565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611e5e908490613278565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611ebe848a8a8a8a8a612679565b505050505050505050565b6001600160a01b038416611f455760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b336000611f518561262e565b90506000611f5e8561262e565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290611f90908490613278565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610ddc83600089898989612679565b6001600160a01b0384163b15611974576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c819061204d90899089908890889088906004016132b9565b6020604051808303816000875af1925050508015612088575060408051601f3d908101601f1916820190925261208591810190613317565b60015b61213d57612094613334565b806308c379a0036120cd57506120a8613350565b806120b357506120cf565b8060405162461bcd60e51b81526004016104fd9190612a10565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016104fd565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610ddc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016104fd565b6001600160a01b0383166122705760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b80518251146122e75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016104fd565b604080516020810190915260009081905233905b8351811015612412576000848281518110612318576123186131d0565b602002602001015190506000848381518110612336576123366131d0565b602090810291909101810151600084815280835260408082206001600160a01b038c1683529093529190912054909150818110156123db5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016104fd565b6000928352602083815260408085206001600160a01b038b168652909152909220910390558061240a8161322e565b9150506122fb565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161246392919061328b565b60405180910390a4604080516020810190915260009052611019565b6001600160a01b0383166124fb5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b3360006125078461262e565b905060006125148461262e565b60408051602080820183526000918290528882528181528282206001600160a01b038b16835290522054909150848110156125b65760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016104fd565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052610ddc565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612668576126686131d0565b602090810291909101015292915050565b6001600160a01b0384163b15611974576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e61906126d690899089908890889088906004016133f8565b6020604051808303816000875af1925050508015612711575060408051601f3d908101601f1916820190925261270e91810190613317565b60015b61271d57612094613334565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610ddc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016104fd565b80356001600160a01b03811681146127eb57600080fd5b919050565b6000806040838503121561280357600080fd5b61280c836127d4565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561286f5761286f61281a565b6040525050565b600082601f83011261288757600080fd5b813567ffffffffffffffff8111156128a1576128a161281a565b6040516128b86020601f19601f8501160182612849565b8181528460208386010111156128cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156128fd57600080fd5b82359150602083013567ffffffffffffffff81111561291b57600080fd5b61292785828601612876565b9150509250929050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146114aa57600080fd5b60006020828403121561297157600080fd5b813561297c81612931565b9392505050565b60006020828403121561299557600080fd5b813567ffffffffffffffff8111156129ac57600080fd5b6129b884828501612876565b949350505050565b60005b838110156129db5781810151838201526020016129c3565b50506000910152565b600081518084526129fc8160208601602086016129c0565b601f01601f19169290920160200192915050565b60208152600061297c60208301846129e4565b600060208284031215612a3557600080fd5b5035919050565b600080600060608486031215612a5157600080fd5b612a5a846127d4565b95602085013595506040909401359392505050565b600067ffffffffffffffff821115612a8957612a8961281a565b5060051b60200190565b600082601f830112612aa457600080fd5b81356020612ab182612a6f565b604051612abe8282612849565b83815260059390931b8501820192828101915086841115612ade57600080fd5b8286015b84811015612af95780358352918301918301612ae2565b509695505050505050565b600080600080600060a08688031215612b1c57600080fd5b612b25866127d4565b9450612b33602087016127d4565b9350604086013567ffffffffffffffff80821115612b5057600080fd5b612b5c89838a01612a93565b94506060880135915080821115612b7257600080fd5b612b7e89838a01612a93565b93506080880135915080821115612b9457600080fd5b50612ba188828901612876565b9150509295509295909350565b60008060408385031215612bc157600080fd5b823567ffffffffffffffff80821115612bd957600080fd5b818501915085601f830112612bed57600080fd5b81356020612bfa82612a6f565b604051612c078282612849565b83815260059390931b8501820192828101915089841115612c2757600080fd5b948201945b83861015612c4c57612c3d866127d4565b82529482019490820190612c2c565b96505086013592505080821115612c6257600080fd5b5061292785828601612a93565b600081518084526020808501945080840160005b83811015612c9f57815187529582019590820190600101612c83565b509495945050505050565b60208152600061297c6020830184612c6f565b60008083601f840112612ccf57600080fd5b50813567ffffffffffffffff811115612ce757600080fd5b6020830191508360208260051b8501011115612d0257600080fd5b9250929050565b60008060008060008060608789031215612d2257600080fd5b863567ffffffffffffffff80821115612d3a57600080fd5b612d468a838b01612cbd565b90985096506020890135915080821115612d5f57600080fd5b612d6b8a838b01612cbd565b90965094506040890135915080821115612d8457600080fd5b50612d9189828a01612cbd565b979a9699509497509295939492505050565b600060208284031215612db557600080fd5b61297c826127d4565b602080825282518282018190526000919060409081850190868401855b82811015612e1d57612e0d84835180516fffffffffffffffffffffffffffffffff168252602090810151600f0b910152565b9284019290850190600101612ddb565b5091979650505050505050565b60008060008060408587031215612e4057600080fd5b843567ffffffffffffffff80821115612e5857600080fd5b612e6488838901612cbd565b90965094506020870135915080821115612e7d57600080fd5b50612e8a87828801612cbd565b95989497509550505050565b60008060408385031215612ea957600080fd5b612eb2836127d4565b915060208301358015158114612ec757600080fd5b809150509250929050565b60008060408385031215612ee557600080fd5b50508035926020909101359150565b82516fffffffffffffffffffffffffffffffff168152602080840151600f0b908201526060604082015260006129b860608301846129e4565b60008060408385031215612f4057600080fd5b612f49836127d4565b9150612f57602084016127d4565b90509250929050565b600080600080600060a08688031215612f7857600080fd5b612f81866127d4565b9450612f8f602087016127d4565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fb957600080fd5b612ba188828901612876565b600181811c90821680612fd957607f821691505b6020821081036109b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115610a9d57600081815260208120601f850160051c810160208610156130395750805b601f850160051c820191505b8181101561197457828155600101613045565b815167ffffffffffffffff8111156130725761307261281a565b613086816130808454612fc5565b84613012565b602080601f8311600181146130bb57600084156130a35750858301515b600019600386901b1c1916600185901b178555611974565b600085815260208120601f198616915b828110156130ea578886015182559484019460019091019084016130cb565b50858210156131085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351602061312b82858389016129c0565b81840191507f2f00000000000000000000000000000000000000000000000000000000000000825260016000865461316281612fc5565b81841680156131785760018114613191576131c1565b60ff1983168588015284821515830288010193506131c1565b896000528560002060005b838110156131b757815489820188015290860190870161319c565b5050848288010193505b50919998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006000198203613241576132416131ff565b5060010190565b6fffffffffffffffffffffffffffffffff818116838216019080821115613271576132716131ff565b5092915050565b80820180821115610529576105296131ff565b60408152600061329e6040830185612c6f565b82810360208401526132b08185612c6f565b95945050505050565b60006001600160a01b03808816835280871660208401525060a060408301526132e560a0830186612c6f565b82810360608401526132f78186612c6f565b9050828103608084015261330b81856129e4565b98975050505050505050565b60006020828403121561332957600080fd5b815161297c81612931565b600060033d111561334d5760046000803e5060005160e01c5b90565b600060443d101561335e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156133ac57505050505090565b82850191508151818111156133c45750505050505090565b843d87010160208285010111156133de5750505050505090565b6133ed60208286010187612849565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261343060a08301846129e4565b97965050505050505056fea26469706673582212200a50a15f1917a16f7d7abc611f5f48111b4ff3809d845d6a35dd61e83404c1c664736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000004568747470733a2f2f7777772e6d79696d6167696e617279667269656e642e636f6d2f6170692f6d79696d6167696e6172796974656d732f6d657461646174612f746f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004868747470733a2f2f7777772e6d79696d6167696e617279667269656e642e636f6d2f6170692f6d79696d6167696e6172796974656d732f6d657461646174612f636f6e7472616374000000000000000000000000000000000000000000000000