0x60806040526004361061017b575f3560e01c8063715018a6116100d1578063a9059cbb1161007c578063ea1644d511610057578063ea1644d514610489578063ec28438a146104a8578063f2fde38b146104c7575f80fd5b8063a9059cbb14610407578063c492f04614610426578063dd62ed3e14610445575f80fd5b80638f9a55c0116100ac5780638f9a55c01461038e57806395d89b41146103a357806398a5c315146103e8575f80fd5b8063715018a6146103495780637d1db4a51461035d5780638da5cb5b14610372575f80fd5b80632fd689e31161013157806349bd5a5e1161010c57806349bd5a5e146102d757806352f7c988146102f657806370a0823114610315575f80fd5b80632fd689e314610286578063313ce5671461029b57806341c6ee38146102b6575f80fd5b80631694505e116101615780631694505e1461020c57806318160ddd1461024357806323b872dd14610267575f80fd5b806306fdde0314610186578063095ea7b3146101dd575f80fd5b3661018257005b5f80fd5b348015610191575f80fd5b5060408051808201909152600b81527f41434b43485955414c4c5900000000000000000000000000000000000000000060208201525b6040516101d49190611462565b60405180910390f35b3480156101e8575f80fd5b506101fc6101f73660046114d1565b6104e6565b60405190151581526020016101d4565b348015610217575f80fd5b5060075461022b906001600160a01b031681565b6040516001600160a01b0390911681526020016101d4565b34801561024e575f80fd5b50675fc1b971363200005b6040519081526020016101d4565b348015610272575f80fd5b506101fc6102813660046114fb565b6104fc565b348015610291575f80fd5b50610259600b5481565b3480156102a6575f80fd5b50604051600981526020016101d4565b3480156102c1575f80fd5b506102d56102d036600461155c565b6105bd565b005b3480156102e2575f80fd5b5060085461022b906001600160a01b031681565b348015610301575f80fd5b506102d561031036600461162e565b610698565b348015610320575f80fd5b5061025961032f36600461164e565b6001600160a01b03165f9081526001602052604090205490565b348015610354575f80fd5b506102d5610789565b348015610368575f80fd5b5061025960095481565b34801561037d575f80fd5b505f546001600160a01b031661022b565b348015610399575f80fd5b50610259600a5481565b3480156103ae575f80fd5b5060408051808201909152600381527f41434b000000000000000000000000000000000000000000000000000000000060208201526101c7565b3480156103f3575f80fd5b506102d5610402366004611669565b61079c565b348015610412575f80fd5b506101fc6104213660046114d1565b6107e0565b348015610431575f80fd5b506102d5610440366004611680565b6107ec565b348015610450575f80fd5b5061025961045f3660046116fd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610494575f80fd5b506102d56104a3366004611669565b6108f1565b3480156104b3575f80fd5b506102d56104c2366004611669565b61092e565b3480156104d2575f80fd5b506102d56104e136600461164e565b61096b565b5f6104f23384846109fb565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203384529091528120548281101561059a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105a785338584036109fb565b6105b2858585610b52565b506001949350505050565b6105c5610f64565b5f5b8251811015610693578160045f8584815181106105e6576105e6611734565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061063557610635611734565b60200260200101516001600160a01b03167f2805abee54b8f8811367e220e10c2da1762bea5b3295e256642ccd724862590083604051610679911515815260200190565b60405180910390a28061068b8161175c565b9150506105c7565b505050565b6106a0610f64565b60058211156106f15760405162461bcd60e51b815260206004820152600f60248201527f46656520697320746f6f206869676800000000000000000000000000000000006044820152606401610591565b60058111156107425760405162461bcd60e51b815260206004820152600f60248201527f46656520697320746f6f206869676800000000000000000000000000000000006044820152606401610591565b6005829055600681905560408051838152602081018390527f3bd44ad33925c1a81e6dea38583782e35a5124cee2473f5fe16d366f0ad0d6b6910160405180910390a15050565b610791610f64565b61079a5f610fbd565b565b6107a4610f64565b600b8190556040518181527fd371a90ac9298515f0c64bbcd4159ea805a04df67586927b3709819f88912f99906020015b60405180910390a150565b5f6104f2338484610b52565b6107f4610f64565b5f5b828110156108eb578160035f86868581811061081457610814611734565b9050602002016020810190610829919061164e565b6001600160a01b0316815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905583838281811061088057610880611734565b9050602002016020810190610895919061164e565b6001600160a01b03167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa9836040516108d1911515815260200190565b60405180910390a2806108e38161175c565b9150506107f6565b50505050565b6108f9610f64565b600a8190556040518181527fcd08c375cc2759ba9284bf314cd100fb0cef5a8ef75294f7c3f0a3320b28bd42906020016107d5565b610936610f64565b60098190556040518181527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa906020016107d5565b610973610f64565b6001600160a01b0381166109ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610591565b6109f881610fbd565b50565b6001600160a01b038316610a765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038216610af25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038216610c4a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610591565b805f03610cbf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b0383165f9081526004602052604090205460ff16158015610cff57506001600160a01b0382165f9081526004602052604090205460ff16155b15610e0b57600954811115610d565760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610591565b6008546001600160a01b03838116911614610e0b57600a5481610d8d846001600160a01b03165f9081526001602052604090205490565b610d979190611793565b1115610e0b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960448201527f7a652100000000000000000000000000000000000000000000000000000000006064820152608401610591565b305f908152600160205260409020546009548110610e2857506009545b5f600b548210158015610e4857505f546001600160a01b03868116911614155b8015610e6157505f546001600160a01b03858116911614155b9050808015610e8b575060085474010000000000000000000000000000000000000000900460ff16155b8015610ea557506008546001600160a01b03868116911614155b8015610ec957506001600160a01b0385165f9081526003602052604090205460ff16155b8015610eed57506001600160a01b0384165f9081526003602052604090205460ff16155b15610f4357610efb82611024565b478015610f415760405173b3dd9af4cf916a93e9ba8c17df08ac15f4ade41d904780156108fc02915f818181858888f19350505050158015610f3f573d5f803e3d5ffd5b505b505b5f610f4e868661120d565b9050610f5c86868684611303565b505050505050565b5f546001600160a01b0316331461079a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610591565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061109657611096611734565b6001600160a01b03928316602091820292909201810191909152600754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611106573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112a91906117a6565b8160018151811061113d5761113d611734565b6001600160a01b03928316602091820292909201015260075461116391309116846109fb565b6007546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906111b49085905f908690309042906004016117c1565b5f604051808303815f87803b1580156111cb575f80fd5b505af11580156111dd573d5f803e3d5ffd5b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550505050565b6008545f9081906001600160a01b0385811691161480159061123d57506008546001600160a01b03848116911614155b1561124957505f6112b7565b6008546001600160a01b03858116911614801561127457506008546001600160a01b03848116911614155b1561128257506005546112b7565b6008546001600160a01b0384811691161480156112ad57506008546001600160a01b03858116911614155b156112b757506006545b6001600160a01b0384165f9081526003602052604090205460ff16806112f457506001600160a01b0383165f9081526003602052604090205460ff165b156112fc57505f5b9392505050565b5f60646113108385611830565b61131a9190611847565b90505f6113278285611866565b6001600160a01b0387165f9081526001602052604090205490915061134d908590611866565b6001600160a01b038088165f90815260016020526040808220939093559087168152205461137c908290611793565b6001600160a01b0386165f90815260016020526040902055811561140d57305f908152600160205260409020546113b4908390611793565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114049086815260200190565b60405180910390a35b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161145291815260200190565b60405180910390a3505050505050565b5f6020808352835180828501525f5b8181101561148d57858101830151858201604001528201611471565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109f8575f80fd5b80356114cc816114ad565b919050565b5f80604083850312156114e2575f80fd5b82356114ed816114ad565b946020939093013593505050565b5f805f6060848603121561150d575f80fd5b8335611518816114ad565b92506020840135611528816114ad565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b803580151581146114cc575f80fd5b5f806040838503121561156d575f80fd5b823567ffffffffffffffff80821115611584575f80fd5b818501915085601f830112611597575f80fd5b81356020828211156115ab576115ab611539565b8160051b604051601f19603f830116810181811086821117156115d0576115d0611539565b6040529283528183019350848101820192898411156115ed575f80fd5b948201945b8386101561161257611603866114c1565b855294820194938201936115f2565b9650611621905087820161154d565b9450505050509250929050565b5f806040838503121561163f575f80fd5b50508035926020909101359150565b5f6020828403121561165e575f80fd5b81356112fc816114ad565b5f60208284031215611679575f80fd5b5035919050565b5f805f60408486031215611692575f80fd5b833567ffffffffffffffff808211156116a9575f80fd5b818601915086601f8301126116bc575f80fd5b8135818111156116ca575f80fd5b8760208260051b85010111156116de575f80fd5b6020928301955093506116f4918601905061154d565b90509250925092565b5f806040838503121561170e575f80fd5b8235611719816114ad565b91506020830135611729816114ad565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361178c5761178c611748565b5060010190565b808201808211156104f6576104f6611748565b5f602082840312156117b6575f80fd5b81516112fc816114ad565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561180f5784516001600160a01b0316835293830193918301916001016117ea565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104f6576104f6611748565b5f8261186157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104f6576104f661174856fea2646970667358221220c879651838e1ee0e8bd4383733d0a0e41e3a798345ad91c19a8158445541093b64736f6c63430008140033
0x608060405260058080556006556008805460ff60a01b19169055675fc1b971363200006009819055600a55662386f26fc10000600b5534801562000041575f80fd5b506200004d3362000354565b335f90815260016020908152604091829020675fc1b971363200009055600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b81529251909263c45a01559260048083019391928290030181865afa158015620000c9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000ef9190620003a3565b6001600160a01b031663c9c653963060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001759190620003a3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001c0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e69190620003a3565b600880546001600160a01b0319166001600160a01b039283161790555f805482168152600460209081526040808320805460ff1990811660019081179092553080865283862080548316841790557fcd9a573251265e3f10f6d0747c4e4148777e7c099a3dc531afa5946f4a84d46c80548316841790557f9c3e0b932a02505ee24a35a6efcd4dfe737be503834dc3a0bf603440c4d525e480548316841790558554909616855260038452828520805482168317905594845281842080548616821790557f7f83c86dc0b6a5ab94c7ca333224da95ac794622ed44a263f986c041548239a6805486168217905573b3dd9af4cf916a93e9ba8c17df08ac15f4ade41d84527f9ef18b6d8ea8d6039f87a15ed2e9c2a6194cd13f00c947f8edf222cfc687f6a98054909516179093559151675fc1b97136320000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003d2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215620003b4575f80fd5b81516001600160a01b0381168114620003cb575f80fd5b9392505050565b6118af80620003e05f395ff3fe60806040526004361061017b575f3560e01c8063715018a6116100d1578063a9059cbb1161007c578063ea1644d511610057578063ea1644d514610489578063ec28438a146104a8578063f2fde38b146104c7575f80fd5b8063a9059cbb14610407578063c492f04614610426578063dd62ed3e14610445575f80fd5b80638f9a55c0116100ac5780638f9a55c01461038e57806395d89b41146103a357806398a5c315146103e8575f80fd5b8063715018a6146103495780637d1db4a51461035d5780638da5cb5b14610372575f80fd5b80632fd689e31161013157806349bd5a5e1161010c57806349bd5a5e146102d757806352f7c988146102f657806370a0823114610315575f80fd5b80632fd689e314610286578063313ce5671461029b57806341c6ee38146102b6575f80fd5b80631694505e116101615780631694505e1461020c57806318160ddd1461024357806323b872dd14610267575f80fd5b806306fdde0314610186578063095ea7b3146101dd575f80fd5b3661018257005b5f80fd5b348015610191575f80fd5b5060408051808201909152600b81527f41434b43485955414c4c5900000000000000000000000000000000000000000060208201525b6040516101d49190611462565b60405180910390f35b3480156101e8575f80fd5b506101fc6101f73660046114d1565b6104e6565b60405190151581526020016101d4565b348015610217575f80fd5b5060075461022b906001600160a01b031681565b6040516001600160a01b0390911681526020016101d4565b34801561024e575f80fd5b50675fc1b971363200005b6040519081526020016101d4565b348015610272575f80fd5b506101fc6102813660046114fb565b6104fc565b348015610291575f80fd5b50610259600b5481565b3480156102a6575f80fd5b50604051600981526020016101d4565b3480156102c1575f80fd5b506102d56102d036600461155c565b6105bd565b005b3480156102e2575f80fd5b5060085461022b906001600160a01b031681565b348015610301575f80fd5b506102d561031036600461162e565b610698565b348015610320575f80fd5b5061025961032f36600461164e565b6001600160a01b03165f9081526001602052604090205490565b348015610354575f80fd5b506102d5610789565b348015610368575f80fd5b5061025960095481565b34801561037d575f80fd5b505f546001600160a01b031661022b565b348015610399575f80fd5b50610259600a5481565b3480156103ae575f80fd5b5060408051808201909152600381527f41434b000000000000000000000000000000000000000000000000000000000060208201526101c7565b3480156103f3575f80fd5b506102d5610402366004611669565b61079c565b348015610412575f80fd5b506101fc6104213660046114d1565b6107e0565b348015610431575f80fd5b506102d5610440366004611680565b6107ec565b348015610450575f80fd5b5061025961045f3660046116fd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610494575f80fd5b506102d56104a3366004611669565b6108f1565b3480156104b3575f80fd5b506102d56104c2366004611669565b61092e565b3480156104d2575f80fd5b506102d56104e136600461164e565b61096b565b5f6104f23384846109fb565b5060015b92915050565b6001600160a01b0383165f9081526002602090815260408083203384529091528120548281101561059a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105a785338584036109fb565b6105b2858585610b52565b506001949350505050565b6105c5610f64565b5f5b8251811015610693578160045f8584815181106105e6576105e6611734565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061063557610635611734565b60200260200101516001600160a01b03167f2805abee54b8f8811367e220e10c2da1762bea5b3295e256642ccd724862590083604051610679911515815260200190565b60405180910390a28061068b8161175c565b9150506105c7565b505050565b6106a0610f64565b60058211156106f15760405162461bcd60e51b815260206004820152600f60248201527f46656520697320746f6f206869676800000000000000000000000000000000006044820152606401610591565b60058111156107425760405162461bcd60e51b815260206004820152600f60248201527f46656520697320746f6f206869676800000000000000000000000000000000006044820152606401610591565b6005829055600681905560408051838152602081018390527f3bd44ad33925c1a81e6dea38583782e35a5124cee2473f5fe16d366f0ad0d6b6910160405180910390a15050565b610791610f64565b61079a5f610fbd565b565b6107a4610f64565b600b8190556040518181527fd371a90ac9298515f0c64bbcd4159ea805a04df67586927b3709819f88912f99906020015b60405180910390a150565b5f6104f2338484610b52565b6107f4610f64565b5f5b828110156108eb578160035f86868581811061081457610814611734565b9050602002016020810190610829919061164e565b6001600160a01b0316815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905583838281811061088057610880611734565b9050602002016020810190610895919061164e565b6001600160a01b03167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa9836040516108d1911515815260200190565b60405180910390a2806108e38161175c565b9150506107f6565b50505050565b6108f9610f64565b600a8190556040518181527fcd08c375cc2759ba9284bf314cd100fb0cef5a8ef75294f7c3f0a3320b28bd42906020016107d5565b610936610f64565b60098190556040518181527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa906020016107d5565b610973610f64565b6001600160a01b0381166109ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610591565b6109f881610fbd565b50565b6001600160a01b038316610a765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038216610af25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b038216610c4a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610591565b805f03610cbf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610591565b6001600160a01b0383165f9081526004602052604090205460ff16158015610cff57506001600160a01b0382165f9081526004602052604090205460ff16155b15610e0b57600954811115610d565760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610591565b6008546001600160a01b03838116911614610e0b57600a5481610d8d846001600160a01b03165f9081526001602052604090205490565b610d979190611793565b1115610e0b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960448201527f7a652100000000000000000000000000000000000000000000000000000000006064820152608401610591565b305f908152600160205260409020546009548110610e2857506009545b5f600b548210158015610e4857505f546001600160a01b03868116911614155b8015610e6157505f546001600160a01b03858116911614155b9050808015610e8b575060085474010000000000000000000000000000000000000000900460ff16155b8015610ea557506008546001600160a01b03868116911614155b8015610ec957506001600160a01b0385165f9081526003602052604090205460ff16155b8015610eed57506001600160a01b0384165f9081526003602052604090205460ff16155b15610f4357610efb82611024565b478015610f415760405173b3dd9af4cf916a93e9ba8c17df08ac15f4ade41d904780156108fc02915f818181858888f19350505050158015610f3f573d5f803e3d5ffd5b505b505b5f610f4e868661120d565b9050610f5c86868684611303565b505050505050565b5f546001600160a01b0316331461079a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610591565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061109657611096611734565b6001600160a01b03928316602091820292909201810191909152600754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611106573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112a91906117a6565b8160018151811061113d5761113d611734565b6001600160a01b03928316602091820292909201015260075461116391309116846109fb565b6007546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906111b49085905f908690309042906004016117c1565b5f604051808303815f87803b1580156111cb575f80fd5b505af11580156111dd573d5f803e3d5ffd5b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550505050565b6008545f9081906001600160a01b0385811691161480159061123d57506008546001600160a01b03848116911614155b1561124957505f6112b7565b6008546001600160a01b03858116911614801561127457506008546001600160a01b03848116911614155b1561128257506005546112b7565b6008546001600160a01b0384811691161480156112ad57506008546001600160a01b03858116911614155b156112b757506006545b6001600160a01b0384165f9081526003602052604090205460ff16806112f457506001600160a01b0383165f9081526003602052604090205460ff165b156112fc57505f5b9392505050565b5f60646113108385611830565b61131a9190611847565b90505f6113278285611866565b6001600160a01b0387165f9081526001602052604090205490915061134d908590611866565b6001600160a01b038088165f90815260016020526040808220939093559087168152205461137c908290611793565b6001600160a01b0386165f90815260016020526040902055811561140d57305f908152600160205260409020546113b4908390611793565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114049086815260200190565b60405180910390a35b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161145291815260200190565b60405180910390a3505050505050565b5f6020808352835180828501525f5b8181101561148d57858101830151858201604001528201611471565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109f8575f80fd5b80356114cc816114ad565b919050565b5f80604083850312156114e2575f80fd5b82356114ed816114ad565b946020939093013593505050565b5f805f6060848603121561150d575f80fd5b8335611518816114ad565b92506020840135611528816114ad565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b803580151581146114cc575f80fd5b5f806040838503121561156d575f80fd5b823567ffffffffffffffff80821115611584575f80fd5b818501915085601f830112611597575f80fd5b81356020828211156115ab576115ab611539565b8160051b604051601f19603f830116810181811086821117156115d0576115d0611539565b6040529283528183019350848101820192898411156115ed575f80fd5b948201945b8386101561161257611603866114c1565b855294820194938201936115f2565b9650611621905087820161154d565b9450505050509250929050565b5f806040838503121561163f575f80fd5b50508035926020909101359150565b5f6020828403121561165e575f80fd5b81356112fc816114ad565b5f60208284031215611679575f80fd5b5035919050565b5f805f60408486031215611692575f80fd5b833567ffffffffffffffff808211156116a9575f80fd5b818601915086601f8301126116bc575f80fd5b8135818111156116ca575f80fd5b8760208260051b85010111156116de575f80fd5b6020928301955093506116f4918601905061154d565b90509250925092565b5f806040838503121561170e575f80fd5b8235611719816114ad565b91506020830135611729816114ad565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361178c5761178c611748565b5060010190565b808201808211156104f6576104f6611748565b5f602082840312156117b6575f80fd5b81516112fc816114ad565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561180f5784516001600160a01b0316835293830193918301916001016117ea565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176104f6576104f6611748565b5f8261186157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104f6576104f661174856fea2646970667358221220c879651838e1ee0e8bd4383733d0a0e41e3a798345ad91c19a8158445541093b64736f6c63430008140033