60806040523480156200001157600080fd5b5060405162001adb38038062001adb8339810160408190526200003491620001a3565b82826000620000448382620002c3565b506001620000538282620002c3565b505050620000706200006a6200008860201b60201c565b6200008c565b60076200007e8282620002c3565b505050506200038f565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010657600080fd5b81516001600160401b0380821115620001235762000123620000de565b604051601f8301601f19908116603f011681019082821181831017156200014e576200014e620000de565b816040528381526020925086838588010111156200016b57600080fd5b600091505b838210156200018f578582018301518183018401529082019062000170565b600093810190920192909252949350505050565b600080600060608486031215620001b957600080fd5b83516001600160401b0380821115620001d157600080fd5b620001df87838801620000f4565b94506020860151915080821115620001f657600080fd5b6200020487838801620000f4565b935060408601519150808211156200021b57600080fd5b506200022a86828701620000f4565b9150509250925092565b600181811c908216806200024957607f821691505b6020821081036200026a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002be57600081815260208120601f850160051c81016020861015620002995750805b601f850160051c820191505b81811015620002ba57828155600101620002a5565b5050505b505050565b81516001600160401b03811115620002df57620002df620000de565b620002f781620002f0845462000234565b8462000270565b602080601f8311600181146200032f5760008415620003165750858301515b600019600386901b1c1916600185901b178555620002ba565b600085815260208120601f198616915b8281101562000360578886015182559484019460019091019084016200033f565b50858210156200037f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61173c806200039f6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b88d4fde1161007c578063b88d4fde1461026b578063c87b56dd1461027e578063cbbe2f6914610291578063d66fe70e146102a4578063e985e9c5146102b7578063f2fde38b146102ca57600080fd5b806370a0823114610224578063715018a6146102375780638da5cb5b1461023f57806395d89b4114610250578063a22cb4651461025857600080fd5b806323b872dd116100ff57806323b872dd146101d057806342842e0e146101e357806355f804b3146101f65780636352211e146102095780636c0360eb1461021c57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a36600461103e565b6102dd565b60405190151581526020015b60405180910390f35b61016c61032f565b60405161015b91906110a8565b61018c6101873660046110bb565b6103c1565b6040516001600160a01b03909116815260200161015b565b6101b76101b23660046110f0565b6103e8565b005b6101c260085481565b60405190815260200161015b565b6101b76101de36600461111a565b610502565b6101b76101f136600461111a565b610533565b6101b7610204366004611156565b61054e565b61018c6102173660046110bb565b6105aa565b61016c61060a565b6101c26102323660046111c8565b610619565b6101b761069f565b6006546001600160a01b031661018c565b61016c6106b3565b6101b76102663660046111e3565b6106c2565b6101b7610279366004611235565b6106d1565b61016c61028c3660046110bb565b610709565b6101b761029f366004611311565b610713565b6101b76102b2366004611374565b6107b9565b61014f6102c53660046113d7565b610814565b6101b76102d83660046111c8565b610842565b60006001600160e01b031982166380ac58cd60e01b148061030e57506001600160e01b03198216635b5e139f60e01b145b8061032957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461033e9061140a565b80601f016020809104026020016040519081016040528092919081815260200182805461036a9061140a565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905090565b60006103cc826108bb565b506000908152600460205260409020546001600160a01b031690565b60006103f3826105aa565b9050806001600160a01b0316836001600160a01b0316036104655760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061048157506104818133610814565b6104f35760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161045c565b6104fd838361091a565b505050565b61050c3382610988565b6105285760405162461bcd60e51b815260040161045c90611444565b6104fd8383836109e7565b6104fd838383604051806020016040528060008152506106d1565b610556610b4b565b60076105638284836114df565b5081816040516105749291906115a0565b6040519081900381209033907fe7e6d2e694e925d1996aaef24328f8c8b026ccc5dd0a1c2397509d5d31de8cbb90600090a35050565b6000818152600260205260408120546001600160a01b0316806103295760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161045c565b6060610614610ba5565b905090565b60006001600160a01b0382166106835760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161045c565b506001600160a01b031660009081526003602052604090205490565b6106a7610b4b565b6106b16000610bb4565b565b60606001805461033e9061140a565b6106cd338383610c06565b5050565b6106db3383610988565b6106f75760405162461bcd60e51b815260040161045c90611444565b61070384848484610cd4565b50505050565b6060610329610ba5565b61071b610b4b565b60085460005b828110156107b15760005b84848381811061073e5761073e6115b0565b905060400201602001602081019061075691906115c6565b6bffffffffffffffffffffffff168110156107a85761079c858584818110610780576107806115b0565b61079692602060409092020190810191506111c8565b84610d07565b6001928301920161072c565b50600101610721565b506008555050565b6107c1610b4b565b60005b818110156107f5576107ed8383838181106107e1576107e16115b0565b90506020020135610e92565b6001016107c4565b50818190506008600082825461080b91906115f4565b90915550505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61084a610b4b565b6001600160a01b0381166108af5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045c565b6108b881610bb4565b50565b6000818152600260205260409020546001600160a01b03166108b85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161045c565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061094f826105aa565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610994836105aa565b9050806001600160a01b0316846001600160a01b031614806109bb57506109bb8185610814565b806109df5750836001600160a01b03166109d4846103c1565b6001600160a01b0316145b949350505050565b826001600160a01b03166109fa826105aa565b6001600160a01b031614610a205760405162461bcd60e51b815260040161045c90611615565b6001600160a01b038216610a825760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161045c565b826001600160a01b0316610a95826105aa565b6001600160a01b031614610abb5760405162461bcd60e51b815260040161045c90611615565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b031633146106b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045c565b60606007805461033e9061140a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c675760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161045c565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cdf8484846109e7565b610ceb84848484610f27565b6107035760405162461bcd60e51b815260040161045c9061165a565b6001600160a01b038216610d5d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161045c565b6000818152600260205260409020546001600160a01b031615610dc25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161045c565b6000818152600260205260409020546001600160a01b031615610e275760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161045c565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610e9d826105aa565b9050610ea8826105aa565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160a01b0384163b1561101d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610f6b9033908990889088906004016116ac565b6020604051808303816000875af1925050508015610fa6575060408051601f3d908101601f19168201909252610fa3918101906116e9565b60015b611003573d808015610fd4576040519150601f19603f3d011682016040523d82523d6000602084013e610fd9565b606091505b508051600003610ffb5760405162461bcd60e51b815260040161045c9061165a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109df565b506001949350505050565b6001600160e01b0319811681146108b857600080fd5b60006020828403121561105057600080fd5b813561105b81611028565b9392505050565b6000815180845260005b818110156110885760208185018101518683018201520161106c565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061105b6020830184611062565b6000602082840312156110cd57600080fd5b5035919050565b80356001600160a01b03811681146110eb57600080fd5b919050565b6000806040838503121561110357600080fd5b61110c836110d4565b946020939093013593505050565b60008060006060848603121561112f57600080fd5b611138846110d4565b9250611146602085016110d4565b9150604084013590509250925092565b6000806020838503121561116957600080fd5b823567ffffffffffffffff8082111561118157600080fd5b818501915085601f83011261119557600080fd5b8135818111156111a457600080fd5b8660208285010111156111b657600080fd5b60209290920196919550909350505050565b6000602082840312156111da57600080fd5b61105b826110d4565b600080604083850312156111f657600080fd5b6111ff836110d4565b91506020830135801515811461121457600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561124b57600080fd5b611254856110d4565b9350611262602086016110d4565b925060408501359150606085013567ffffffffffffffff8082111561128657600080fd5b818701915087601f83011261129a57600080fd5b8135818111156112ac576112ac61121f565b604051601f8201601f19908116603f011681019083821181831017156112d4576112d461121f565b816040528281528a60208487010111156112ed57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806020838503121561132457600080fd5b823567ffffffffffffffff8082111561133c57600080fd5b818501915085601f83011261135057600080fd5b81358181111561135f57600080fd5b8660208260061b85010111156111b657600080fd5b6000806020838503121561138757600080fd5b823567ffffffffffffffff8082111561139f57600080fd5b818501915085601f8301126113b357600080fd5b8135818111156113c257600080fd5b8660208260051b85010111156111b657600080fd5b600080604083850312156113ea57600080fd5b6113f3836110d4565b9150611401602084016110d4565b90509250929050565b600181811c9082168061141e57607f821691505b60208210810361143e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b601f8211156104fd57600081815260208120601f850160051c810160208610156114b85750805b601f850160051c820191505b818110156114d7578281556001016114c4565b505050505050565b67ffffffffffffffff8311156114f7576114f761121f565b61150b83611505835461140a565b83611491565b6000601f84116001811461153f57600085156115275750838201355b600019600387901b1c1916600186901b178355611599565b600083815260209020601f19861690835b828110156115705786850135825560209485019460019092019101611550565b508682101561158d5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156115d857600080fd5b81356bffffffffffffffffffffffff8116811461105b57600080fd5b8181038181111561032957634e487b7160e01b600052601160045260246000fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906116df90830184611062565b9695505050505050565b6000602082840312156116fb57600080fd5b815161105b8161102856fea2646970667358221220d2c794ec81e761cd711974e952d1687a45f430de8c2d5406c0d811288bb6f6c464736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f496e6e696573206f6e20426c61737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006494e4e49455300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d4e56735a7262365472465445773836655a544870536e4c363135554c6874724c6b597056434b4272527a46542f00000000000000000000