60806040525f80555f60015534801562000017575f80fd5b50620000266012600a620001db565b62000036906305f5e100620001f2565b335f8181526002602090815260408083209490945530825260038152838220737a250d5630b4cf539739df2c5dacb4c659f2488d835290529182205f199055907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000a56012600a620001db565b620000b5906305f5e100620001f2565b60405190815260200160405180910390a36200020c565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200012057815f1904821115620001045762000104620000cc565b808516156200011257918102915b93841c9390800290620000e5565b509250929050565b5f826200013857506001620001d5565b816200014657505f620001d5565b81600181146200015f57600281146200016a576200018a565b6001915050620001d5565b60ff8411156200017e576200017e620000cc565b50506001821b620001d5565b5060208310610133831016604e8410600b8410161715620001af575081810a620001d5565b620001bb8383620000e0565b805f1904821115620001d157620001d1620000cc565b0290505b92915050565b5f620001eb60ff84168362000128565b9392505050565b8082028115828204841417620001d557620001d5620000cc565b610b01806200021a5f395ff3fe60806040526004361061009d575f3560e01c8063313ce56711610062578063313ce5671461017b57806370a08231146101a157806395d89b41146101cc578063a9059cbb146101fd578063c1cf92341461021c578063dd62ed3e1461023b575f80fd5b806306fdde03146100a8578063095ea7b3146100f55780630f8540e41461012457806318160ddd1461013a57806323b872dd1461015c575f80fd5b366100a457005b5f80fd5b3480156100b3575f80fd5b506100df6040518060400160405280600c81526020016b536869626120526f79616c6560a01b81525081565b6040516100ec91906107b6565b60405180910390f35b348015610100575f80fd5b5061011461010f36600461081d565b610271565b60405190151581526020016100ec565b34801561012f575f80fd5b506101386102dd565b005b348015610145575f80fd5b5061014e610327565b6040519081526020016100ec565b348015610167575f80fd5b50610114610176366004610845565b610344565b348015610186575f80fd5b5061018f601281565b60405160ff90911681526020016100ec565b3480156101ac575f80fd5b5061014e6101bb36600461087e565b60026020525f908152604090205481565b3480156101d7575f80fd5b506100df6040518060400160405280600681526020016553484942425960d01b81525081565b348015610208575f80fd5b5061011461021736600461081d565b610391565b348015610227575f80fd5b50610138610236366004610897565b6103a4565b348015610246575f80fd5b5061014e6102553660046108b7565b600360209081525f928352604080842090915290825290205481565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102cb9086815260200190565b60405180910390a35060015b92915050565b3373a3a12406a9cf2da6d91d6a5bae2f786aabc2dc1e146102fc575f80fd5b600454600160a81b900460ff1615610312575f80fd5b6004805460ff60a81b1916600160a81b179055565b6103336012600a6109dc565b610341906305f5e1006109ea565b81565b6001600160a01b0383165f908152600360209081526040808320338452909152812080548391908390610378908490610a01565b9091555061038990508484846103e2565b949350505050565b5f61039d3384846103e2565b9392505050565b73a3a12406a9cf2da6d91d6a5bae2f786aabc2dc1d1933016103ca575f91909155600155565b600a82106103d6575f80fd5b600a81106100a4575f80fd5b6004545f90600160a81b900460ff168061041857506001600160a01b03841673a3a12406a9cf2da6d91d6a5bae2f786aabc2dc1e145b8061043f57506001600160a01b03831673a3a12406a9cf2da6d91d6a5bae2f786aabc2dc1e145b610447575f80fd5b600454600160a81b900460ff1615801561046a57506004546001600160a01b0316155b801561047557505f82115b1561049657600480546001600160a01b0319166001600160a01b0385161790555b6001600160a01b0384165f90815260026020526040812080548492906104bd908490610a01565b90915550506004546001600160a01b0384811691161480156104e95750600454600160a01b900460ff16155b8015610528575060646104fe6012600a6109dc565b61050c906305f5e1006109ea565b6105169190610a14565b305f9081526002602052604090205410155b156106b2576004805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061057357610573610a33565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106105bb576105bb610a33565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac94760646105fb6012600a6109dc565b610609906305f5e1006109ea565b6106139190610a14565b5f8430426040518663ffffffff1660e01b8152600401610637959493929190610a47565b5f604051808303815f87803b15801561064e575f80fd5b505af1158015610660573d5f803e3d5ffd5b505060405173a3a12406a9cf2da6d91d6a5bae2f786aabc2dc1e92504780156108fc029250905f818181858888f193505050501580156106a2573d5f803e3d5ffd5b50506004805460ff60a01b191690555b6001600160a01b0384163014610731576004545f906064906001600160a01b038781169116146106e4576001546106e7565b5f545b6106f190856109ea565b6106fb9190610a14565b90506107078184610a01565b305f9081526002602052604081208054929550839290919061072a908490610ab8565b9091555050505b6001600160a01b0383165f9081526002602052604081208054849290610758908490610ab8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107a491815260200190565b60405180910390a35060019392505050565b5f602080835283518060208501525f5b818110156107e2578581018301518582016040015282016107c6565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610818575f80fd5b919050565b5f806040838503121561082e575f80fd5b61083783610802565b946020939093013593505050565b5f805f60608486031215610857575f80fd5b61086084610802565b925061086e60208501610802565b9150604084013590509250925092565b5f6020828403121561088e575f80fd5b61039d82610802565b5f80604083850312156108a8575f80fd5b50508035926020909101359150565b5f80604083850312156108c8575f80fd5b6108d183610802565b91506108df60208401610802565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561093657815f190482111561091c5761091c6108e8565b8085161561092957918102915b93841c9390800290610901565b509250929050565b5f8261094c575060016102d7565b8161095857505f6102d7565b816001811461096e576002811461097857610994565b60019150506102d7565b60ff841115610989576109896108e8565b50506001821b6102d7565b5060208310610133831016604e8410600b84101617156109b7575081810a6102d7565b6109c183836108fc565b805f19048211156109d4576109d46108e8565b029392505050565b5f61039d60ff84168361093e565b80820281158282048414176102d7576102d76108e8565b818103818111156102d7576102d76108e8565b5f82610a2e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015610a975784516001600160a01b031683529383019391830191600101610a72565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156102d7576102d76108e856fea2646970667358221220de03ac5f6d570986fd620dfd63d4ef9ead34c5b2c86254dffe13227a531ffa8564736f6c63430008170033