ERC-721
Source Code
Overview
Max Total Supply
685 CHOOC...
Holders
515
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 CHOOCHOOLoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initialHolder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"passenger","type":"address"}],"name":"AlreadyRodeTrain","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"CannotSendToCurrentPassenger","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"name":"InsufficientDeposit","type":"error"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"}],"name":"InvalidFid","type":"error"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"NotEligibleToYoink","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NotOwnerNorApproved","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"TransferToInvalidAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previous","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"current","type":"uint256"}],"name":"DepositCostUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TicketStamped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TrainDeparted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previous","type":"address"},{"indexed":true,"internalType":"address","name":"current","type":"address"}],"name":"UsdcAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"uint256","name":"fid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UsdcDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UsdcWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Yoink","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousHours","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHours","type":"uint256"}],"name":"YoinkTimerUpdated","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newAdmins","type":"address[]"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"admins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fidToUsdcDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdmins","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTrainHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTrainJourney","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTrainStatus","outputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"totalStops","type":"uint256"},{"internalType":"uint256","name":"lastMoveTime","type":"uint256"},{"internalType":"bool","name":"canBeYoinked","type":"bool"},{"internalType":"uint256","name":"nextTicketId_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUsdcBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasBeenPassenger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isYoinkable","outputs":[{"internalType":"bool","name":"canYoink","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTransferTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainImage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"ticketTokenURI","type":"string"}],"name":"nextStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"fullTokenURI","type":"string"},{"internalType":"string","name":"image","type":"string"}],"name":"ownerMintTicket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"ownerWithdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"previousPassenger","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setDepositCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_mainImage","type":"string"}],"name":"setMainImage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_mainTokenURI","type":"string"}],"name":"setMainTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"fullTokenURI","type":"string"},{"internalType":"string","name":"image","type":"string"}],"name":"setTicketData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newImage","type":"string"}],"name":"setTicketImage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setTicketTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newUsdc","type":"address"}],"name":"setUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newHours","type":"uint256"}],"name":"setYoinkTimerHours","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ticketData","outputs":[{"internalType":"string","name":"tokenURI","type":"string"},{"internalType":"string","name":"image","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ticketMintedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"trainJourney","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"yoink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yoinkTimerHours","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526001600f55600c6015556200001c6006600a62000bea565b6200002990600162000bfe565b60185534801562000038575f80fd5b5060405162005b8e38038062005b8e8339810160408190526200005b9162000c18565b336040518060400160405280601081526020016f43686f6f43686f6f206f6e204261736560801b8152506040518060400160405280600881526020016743484f4f43484f4f60c01b815250815f9081620000b6919062000cd7565b506001620000c5828262000cd7565b5050506001600160a01b038116620000f757604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620001028162000203565b506001600160a01b03811615806200012457506001600160a01b03811661dead145b156200014f5760405163313e6b2160e11b81526001600160a01b0382166004820152602401620000ee565b6200015b815f62000254565b426012556200016b5f3362000279565b50620001987fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217753362000279565b5050601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b031990811633179091556017805490911673833589fcd6edb6e08f4c7c32d4f71b54bda0291317905562000e76565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b62000275828260405180602001604052805f8152506200032960201b60201c565b5050565b5f828152600b602090815260408083206001600160a01b038516845290915281205460ff1662000320575f838152600b602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620002d73390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000323565b505f5b92915050565b62000335838362000349565b62000344335f858585620003b0565b505050565b6001600160a01b0382166200037457604051633250574960e11b81525f6004820152602401620000ee565b5f62000382838383620004e5565b90506001600160a01b0381161562000344576040516339e3563760e11b81525f6004820152602401620000ee565b6001600160a01b0383163b15620004de57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620003f590889088908790879060040162000d9f565b6020604051808303815f875af192505050801562000432575060408051601f3d908101601f191682019092526200042f9181019062000e0f565b60015b6200049e573d80801562000462576040519150601f19603f3d011682016040523d82523d5f602084013e62000467565b606091505b5080515f036200049657604051633250574960e11b81526001600160a01b0385166004820152602401620000ee565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620004dc57604051633250574960e11b81526001600160a01b0385166004820152602401620000ee565b505b5050505050565b5f80620004f4858585620005c7565b90506001600160a01b03811662000553576200054d84600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b62000579565b846001600160a01b0316816001600160a01b0316146200057957620005798185620006c0565b6001600160a01b0385166200059957620005938462000740565b620005bf565b846001600160a01b0316816001600160a01b031614620005bf57620005bf8585620007f2565b949350505050565b5f828152600260205260408120546001600160a01b0390811690831615620005f657620005f681848662000844565b6001600160a01b038116156200063357620006145f858180620008ae565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b0385161562000662576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f620006cc83620009d9565b5f838152600760209081526040808320546001600160a01b038816845260069092529091209192509081831462000722575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90620007539060019062000e38565b5f83815260096020526040812054600880549394509092849081106200077d576200077d62000e4e565b905f5260205f200154905080600883815481106200079f576200079f62000e4e565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480620007d957620007d962000e62565b600190038181905f5260205f20015f9055905550505050565b5f60016200080084620009d9565b6200080c919062000e38565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6200085183838362000a20565b62000344576001600160a01b0383166200088257604051637e27328960e01b815260048101829052602401620000ee565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ee565b8080620008c357506001600160a01b03821615155b15620009aa575f620008d58462000aa3565b90506001600160a01b03831615801590620009025750826001600160a01b0316816001600160a01b031614155b80156200093457506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156200095f5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ee565b8115620009a85783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821662000a05576040516322718ad960e21b81525f6004820152602401620000ee565b506001600160a01b03165f9081526003602052604090205490565b5f6001600160a01b03831615801590620005bf5750826001600160a01b0316846001600160a01b0316148062000a7a57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b80620005bf5750505f908152600460205260409020546001600160a01b03908116911614919050565b5f818152600260205260408120546001600160a01b0316806200032357604051637e27328960e01b815260048101849052602401620000ee565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111562000b3157815f190482111562000b155762000b1562000add565b8085161562000b2357918102915b93841c939080029062000af6565b509250929050565b5f8262000b495750600162000323565b8162000b5757505f62000323565b816001811462000b70576002811462000b7b5762000b9b565b600191505062000323565b60ff84111562000b8f5762000b8f62000add565b50506001821b62000323565b5060208310610133831016604e8410600b841016171562000bc0575081810a62000323565b62000bcc838362000af1565b805f190482111562000be25762000be262000add565b029392505050565b5f62000bf7838362000b39565b9392505050565b808202811582820484141762000323576200032362000add565b5f6020828403121562000c29575f80fd5b81516001600160a01b038116811462000bf7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168062000c6957607f821691505b60208210810362000c8857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000344575f81815260208120601f850160051c8101602086101562000cb65750805b601f850160051c820191505b81811015620004dc5782815560010162000cc2565b81516001600160401b0381111562000cf35762000cf362000c40565b62000d0b8162000d04845462000c54565b8462000c8e565b602080601f83116001811462000d41575f841562000d295750858301515b5f19600386901b1c1916600185901b178555620004dc565b5f85815260208120601f198616915b8281101562000d715788860151825594840194600190910190840162000d50565b508582101562000d8f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60018060a01b03808716835260208187168185015285604085015260806060850152845191508160808501525f5b8281101562000dec5785810182015185820160a00152810162000dce565b50505f60a0828501015260a0601f19601f83011684010191505095945050505050565b5f6020828403121562000e20575f80fd5b81516001600160e01b03198116811462000bf7575f80fd5b8181038181111562000323576200032362000add565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b614d0a8062000e845f395ff3fe608060405234801561000f575f80fd5b50600436106103b4575f3560e01c80636b63d697116101f5578063a22cb46511610114578063cb146879116100a9578063e740010f11610079578063e740010f146108b7578063e985e9c5146108ca578063f2f72fee14610912578063f2fde38b14610925575f80fd5b8063cb1468791461086b578063cdcaf6011461087e578063d547741f14610891578063e51baa02146108a4575f80fd5b8063baa20d35116100e4578063baa20d35146107ff578063c1419def14610848578063c31ee12e14610850578063c87b56dd14610858575f80fd5b8063a22cb465146107bd578063b0ce8b71146107d0578063b79480ff146107d9578063b88d4fde146107ec575f80fd5b80638da5cb5b1161018a5780639768cada1161015a5780639768cada1461077b5780639da2c0421461079a5780639f5025ec146107ad578063a217fddf146107b6575f80fd5b80638da5cb5b146106fd57806391d148541461071b5780639456fbcc1461076057806395d89b4114610773575f80fd5b80637aa205e0116101c55780637aa205e0146106d25780637ee2d9a9146106da578063889ea767146106ed5780638a5a3396146106f5575f80fd5b80636b63d6971461067d57806370a0823114610690578063715018a6146106a357806375b238fc146106ab575f80fd5b806331ae450b116102e15780633eebf57e116102765780635426db6d116102465780635426db6d1461062257806356cf43c71461063557806361f765c7146106485780636352211e1461066a575f80fd5b80633eebf57e146105e157806342842e0e146105e9578063463de928146105fc5780634f6ccce71461060f575f80fd5b80633842e8e1116102b15780633842e8e11461057a578063394803fd1461058d5780633d0950a8146105ae5780633e413bee146105c1575f80fd5b806331ae450b1461051f578063324d9fc31461053457806334f881271461054757806336568abe14610567575f80fd5b806314bfd6d011610357578063248a9ca311610327578063248a9ca3146104ce5780632f2ff15d146104f05780632f745c591461050357806330fd956d14610516575f80fd5b806314bfd6d01461048d5780631785f53c146104a057806318160ddd146104b357806323b872dd146104bb575f80fd5b806306fdde031161039257806306fdde031461040c578063081812fc14610421578063095ea7b3146104595780630cb520cd1461046e575f80fd5b806301ffc9a7146103b8578063037887ed146103e057806306e8337f146103f6575b5f80fd5b6103cb6103c63660046143a5565b610938565b60405190151581526020015b60405180910390f35b6103e8610948565b6040516103d7929190614432565b6103fe6109e4565b6040519081526020016103d7565b610414610a13565b6040516103d7919061444c565b61043461042f36600461445e565b610aa2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d7565b61046c610467366004614498565b610ad6565b005b6103fe61047c36600461445e565b60196020525f908152604090205481565b61043461049b36600461445e565b610ae5565b61046c6104ae3660046144c0565b610b1a565b6008546103fe565b61046c6104c93660046144d9565b610dbe565b6103fe6104dc36600461445e565b5f908152600b602052604090206001015490565b61046c6104fe366004614512565b610ddd565b6103fe610511366004614498565b610e07565b6103fe60125481565b610527610e9d565b6040516103d7919061453c565b61046c610542366004614671565b610f09565b6013546104349073ffffffffffffffffffffffffffffffffffffffff1681565b61046c610575366004614512565b610f1d565b61046c6105883660046146a3565b610f76565b6105a061059b36600461445e565b611145565b6040516103d792919061470b565b61046c6105bc366004614738565b61126c565b6017546104349073ffffffffffffffffffffffffffffffffffffffff1681565b610527611511565b61046c6105f73660046144d9565b61157c565b61046c61060a36600461445e565b611596565b6103fe61061d36600461445e565b6115e6565b61046c6106303660046147a7565b611654565b61046c6106433660046147de565b6117a6565b6103cb6106563660046144c0565b60146020525f908152604090205460ff1681565b61043461067836600461445e565b611b1e565b61046c61068b3660046144c0565b611b28565b6103fe61069e3660046144c0565b611d2f565b61046c611da7565b6103fe7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610414611dba565b61046c6106e8366004614829565b611e46565b610414611ece565b610434611edb565b600a5473ffffffffffffffffffffffffffffffffffffffff16610434565b6103cb610729366004614512565b5f918252600b6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61046c61076e366004614857565b611ee5565b610414612226565b6103fe61078936600461445e565b600d6020525f908152604090205481565b61046c6107a8366004614671565b612235565b6103fe60155481565b6103fe5f81565b61046c6107cb36600461488c565b612249565b6103fe60185481565b61046c6107e7366004614829565b612254565b61046c6107fa3660046148c1565b6122df565b6108076122eb565b6040805173ffffffffffffffffffffffffffffffffffffffff909616865260208601949094529284019190915215156060830152608082015260a0016103d7565b6103fe600681565b6103fe612334565b61041461086636600461445e565b6123c4565b61046c6108793660046144c0565b61247a565b61046c61088c36600461445e565b61259e565b61046c61089f366004614512565b612702565b61046c6108b23660046144c0565b612726565b61046c6108c5366004614938565b612b1f565b6103cb6108d8366004614857565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b61043461092036600461445e565b612cf0565b61046c6109333660046144c0565b612cff565b5f61094282612d62565b92915050565b5f6060601554610e1061095b9190614985565b601254610968919061499c565b4210156109a957505060408051808201909152601a81527f596f696e6b206973207374696c6c206f6e20636f6f6c646f776e00000000000060208201525f91565b505060408051808201909152601881527f43686f6f43686f6f2063616e20626520796f696e6b65642100000000000000006020820152600191565b5f806109ef60085490565b116109f957505f90565b6001610a0460085490565b610a0e91906149af565b905090565b60605f8054610a21906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4d906149c2565b8015610a985780601f10610a6f57610100808354040283529160200191610a98565b820191905f5260205f20905b815481529060010190602001808311610a7b57829003601f168201915b5050505050905090565b5f610aac82612db7565b505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16610942565b610ae1828233612e15565b5050565b60168181548110610af4575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f610b2481612e22565b73ffffffffffffffffffffffffffffffffffffffff82165f9081527f5329df1543cb285eabd9ee00d915d71c9b1e8ff70a737be4b25897d47fe38cd2602052604090205460ff16610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610c007fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583612e2c565b505f5b601654811015610d79578273ffffffffffffffffffffffffffffffffffffffff1660168281548110610c3757610c37614a13565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610d675760168054610c6d906001906149af565b81548110610c7d57610c7d614a13565b5f918252602090912001546016805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cb557610cb5614a13565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506016805480610d0b57610d0b614a40565b5f8281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055610d79565b80610d7181614a6d565b915050610c03565b5060405173ffffffffffffffffffffffffffffffffffffffff8316907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a25050565b610dd883838360405180602001604052805f815250612ef0565b505050565b5f828152600b6020526040902060010154610df781612e22565b610e01838361306e565b50505050565b5f610e1183611d2f565b8210610e68576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610bcd565b5073ffffffffffffffffffffffffffffffffffffffff919091165f908152600660209081526040808320938352929052205490565b60606016805480602002602001604051908101604052809291908181526020018280548015610a9857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed5575050505050905090565b610f11613164565b6011610ae18282614ae9565b73ffffffffffffffffffffffffffffffffffffffff81163314610f6c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd88282612e2c565b610fa07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b825f0361106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f8381526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166110f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e20646f6573206e6f742065786973740000000000000000000000006044820152606401610bcd565b60408051808201825283815260208082018490525f868152600e90915291909120815181906111289082614ae9565b506020820151600182019061113d9082614ae9565b505050505050565b600e6020525f908152604090208054819061115f906149c2565b80601f016020809104026020016040519081016040528092919081815260200182805461118b906149c2565b80156111d65780601f106111ad576101008083540402835291602001916111d6565b820191905f5260205f20905b8154815290600101906020018083116111b957829003601f168201915b5050505050908060010180546111eb906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611217906149c2565b80156112625780601f1061123957610100808354040283529160200191611262565b820191905f5260205f20905b81548152906001019060200180831161124557829003601f168201915b5050505050905082565b5f61127681612e22565b816112dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4d75737420616464206174206c65617374206f6e652061646d696e00000000006044820152606401610bcd565b5f5b82811015610e01575f8484838181106112fa576112fa614a13565b905060200201602081019061130f91906144c0565b905073ffffffffffffffffffffffffffffffffffffffff811661138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646d696e206164647265737300000000000000000000006044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff81165f8181527f5329df1543cb285eabd9ee00d915d71c9b1e8ff70a737be4b25897d47fe38cd2602052604090205460ff1615906113e29060146131b7565b6040516020016113f29190614c01565b60405160208183030381529060405290611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd919061444c565b506114647fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758261306e565b50601680546001810182555f9182527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405190917f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33991a2508061150981614a6d565b9150506112df565b6060600c805480602002602001604051908101604052809291908181526020018280548015610a9857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed5575050505050905090565b610dd883838360405180602001604052805f8152506122df565b5f6115a081612e22565b601880549083905560408051828152602081018590527f9574ea781c3bc1bc7602ec10276330d0ffbd853b471ab6997dc6880b2f02b914910160405180910390a1505050565b5f6115f060085490565b8210611631576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081525f600482015260248101839052604401610bcd565b6008828154811061164457611644614a13565b905f5260205f2001549050919050565b61165c613164565b8273ffffffffffffffffffffffffffffffffffffffff81161580611697575073ffffffffffffffffffffffffffffffffffffffff811661dead145b156116e6576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b600f546116f385826133d7565b60408051808201825285815260208082018690525f848152600e90915291909120815181906117229082614ae9565b50602082015160018201906117379082614ae9565b5050505f818152600d60205260408120429055600f80549161175883614a6d565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8716907fbec6f0dc8a3c4bf6f33a6146f908f206a41048c99023f4e9de515d59af332569905f90a35050505050565b6117d07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b8173ffffffffffffffffffffffffffffffffffffffff81161580611871575073ffffffffffffffffffffffffffffffffffffffff811661dead145b156118c0576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b5f6118ca5f611b1e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611949576040517f4c91707f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526014602052604090205460ff16156119c0576040517fdc34873c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b600f5473ffffffffffffffffffffffffffffffffffffffff82165f81815260146020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600c8054918201815584527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116861790915560138054909116909417909355426012558251908101909252808252611a9791849188916133f0565b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffde2bfed4d30aa9fd021d257017c776d8307bc9e7d4fbda1dbe19a76a39aeac542604051611af691815260200190565b60405180910390a3611b0782613408565b5f818152600e6020526040902061113d8582614ae9565b5f61094282612db7565b611b30613164565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc09190614c41565b90505f8111611c2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e6f20455243323020746f6b656e7320746f20776974686472617700000000006044820152606401610bcd565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611c66600a5473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303815f875af1158015611cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf99190614c58565b610dd8576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff8216611d7f576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b611daf613164565b611db85f613509565b565b60108054611dc7906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611df3906149c2565b8015611e3e5780601f10611e1557610100808354040283529160200191611e3e565b820191905f5260205f20905b815481529060010190602001808311611e2157829003601f168201915b505050505081565b611e4e613164565b815f03611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f828152600e60205260409020610dd88282614ae9565b60118054611dc7906149c2565b5f610a0e5f611b1e565b611f0f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff8116611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f57687920776f756c6420796f7520646f20746861743f000000000000000000006044820152606401610bcd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561205e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120829190614c41565b90505f81116120ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f54686572652773206e6f7468696e6720746f20776974686472617700000000006044820152606401610bcd565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af115801561215f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121839190614c58565b6121b9576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3d4615e8c603d7e5f1daba3e13f38aab3a8a20067bdb42d4c454ebcd2f0258b38360405161221891815260200190565b60405180910390a350505050565b606060018054610a21906149c2565b61223d613164565b6010610ae18282614ae9565b610ae133838361357f565b61225c613164565b815f036122c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f828152600e60205260409020600101610dd88282614ae9565b610e0184848484612ef0565b5f805f805f6122f95f611b1e565b600c54601254601554929750909550935061231690610e10614985565b601254612323919061499c565b4210159150600f5490509091929394565b6017546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156123a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0e9190614c41565b6060815f0361245d57601180546123da906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054612406906149c2565b80156124515780601f1061242857610100808354040283529160200191612451565b820191905f5260205f20905b81548152906001019060200180831161243457829003601f168201915b50505050509050919050565b5f828152600e6020526040902080546123da906149c2565b919050565b5f61248481612e22565b73ffffffffffffffffffffffffffffffffffffffff8216612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f49276d206e6f74206c657474696e6720796f752073657420746865205553444360448201527f206164647265737320746f20746865207a65726f2061646472657373000000006064820152608401610bcd565b6017805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7dcd2c12cfcc397a33bdadd64452f757ead5ae363dcd02873aebbb68d4ee47d0905f90a3505050565b6125c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b61262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b5f81116126bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f596f696e6b2074696d6572206d7573742062652067726561746572207468616e60448201527f20300000000000000000000000000000000000000000000000000000000000006064820152608401610bcd565b601580549082905560408051828152602081018490527f839a7fc22525a62186596452ab6a6114ae14dd5ca39cac73e8bfd7d58ae507fe910160405180910390a15050565b5f828152600b602052604090206001015461271c81612e22565b610e018383612e2c565b6127507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b6127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b8073ffffffffffffffffffffffffffffffffffffffff811615806127f1575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15612840576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b5f8061284a610948565b915091508161288757806040517f15febbc2000000000000000000000000000000000000000000000000000000008152600401610bcd919061444c565b5f6128915f611b1e565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612910576040517f4c91707f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526014602052604090205460ff1615612987576040517fdc34873c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff81165f81815260146020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600c8054918201815584527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116861790915560138054909116909417909355426012558251908101909252808252612a5b91839188916133f0565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffde2bfed4d30aa9fd021d257017c776d8307bc9e7d4fbda1dbe19a76a39aeac542604051612aba91815260200190565b60405180910390a3612acb81613408565b60405142815273ffffffffffffffffffffffffffffffffffffffff86169033907f3207dae3147fa092fdbd1fe811804357c9e51b97bb1625a35892b6e02ffff8999060200160405180910390a35050505050565b815f03612b5b576040517fa94ce2c200000000000000000000000000000000000000000000000000000000815260048101839052602401610bcd565b601854811015612ba5576018546040517f25c3f46e000000000000000000000000000000000000000000000000000000008152610bcd918391600401918252602082015260400190565b60175473ffffffffffffffffffffffffffffffffffffffff166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018490526064016020604051808303815f875af1158015612c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c5d9190614c58565b612c93576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526019602052604081208054839290612cb090849061499c565b9091555050604051818152829033907fa0dc50296ad89758bb723002622b8c17928c370d51794357af78d2fa96598aa49060200160405180910390a35050565b600c8181548110610af4575f80fd5b612d07613164565b73ffffffffffffffffffffffffffffffffffffffff8116612d56576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b612d5f81613509565b50565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061094257506109428261367b565b5f8181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610942576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610bcd565b610dd883838360016136d0565b612d5f8133613898565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612ee9575f838152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610942565b505f610942565b8273ffffffffffffffffffffffffffffffffffffffff81161580612f2b575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15612f7a576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b825f03613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f547261696e2063616e206f6e6c79206265206d6f7665642062792061646d696e60448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610bcd565b61301c61301584611b1e565b338561391f565b61305b576040517f26e6a53100000000000000000000000000000000000000000000000000000000815233600482015260248101849052604401610bcd565b613067858585856133f0565b5050505050565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612ee9575f838152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556131023390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610942565b600a5473ffffffffffffffffffffffffffffffffffffffff163314611db8576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610bcd565b6060825f6131c6846002614985565b6131d190600261499c565b67ffffffffffffffff8111156131e9576131e9614595565b6040519080825280601f01601f191660200182016040528015613213576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061324957613249614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106132ab576132ab614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6132e5856002614985565b6132f090600161499c565b90505b600181111561338c577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061333157613331614a13565b1a60f81b82828151811061334757613347614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049290921c9161338581614c73565b90506132f3565b5081156133cf576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bcd565b949350505050565b610ae1828260405180602001604052805f8152506139e0565b6133fb8484846139f7565b610e013385858585613b30565b8073ffffffffffffffffffffffffffffffffffffffff81161580613443575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15613492576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b600f5461349f83826133d7565b5f818152600d60205260408120429055600f8054916134bd83614a6d565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8516907fbec6f0dc8a3c4bf6f33a6146f908f206a41048c99023f4e9de515d59af332569905f90a3505050565b600a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b73ffffffffffffffffffffffffffffffffffffffff82166135e4576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610942575061094282613d1d565b80806136f1575073ffffffffffffffffffffffffffffffffffffffff821615155b15613844575f61370084612db7565b905073ffffffffffffffffffffffffffffffffffffffff83161580159061375357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613791575073ffffffffffffffffffffffffffffffffffffffff8082165f9081526005602090815260408083209387168352929052205460ff16155b156137e0576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610bcd565b811561384257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ae1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610bcd565b5f73ffffffffffffffffffffffffffffffffffffffff8316158015906133cf57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806139ab575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209387168352929052205460ff165b806133cf5750505f9081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b6139ea8383613dff565b610dd8335f858585613b30565b73ffffffffffffffffffffffffffffffffffffffff8216613a46576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f613a5283835f613eac565b905073ffffffffffffffffffffffffffffffffffffffff8116613aa4576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610bcd565b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff83163b15613067576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290613ba5908890889087908790600401614ca7565b6020604051808303815f875af1925050508015613bfd575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613bfa91810190614cef565b60015b613c8a573d808015613c2a576040519150601f19603f3d011682016040523d82523d5f602084013e613c2f565b606091505b5080515f03613c82576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a02000000000000000000000000000000000000000000000000000000001461113d576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480613daf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061094257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610942565b73ffffffffffffffffffffffffffffffffffffffff8216613e4e576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f613e5a83835f613eac565b905073ffffffffffffffffffffffffffffffffffffffff811615610dd8576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f80613eb9858585613fc5565b905073ffffffffffffffffffffffffffffffffffffffff8116613f2257613f1d84600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613f5f565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613f5f57613f5f818561413c565b73ffffffffffffffffffffffffffffffffffffffff8516613f8857613f83846141c6565b6133cf565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146133cf576133cf858561426d565b5f8281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615613ffe57613ffe8184866142c8565b73ffffffffffffffffffffffffffffffffffffffff811615614071576140265f855f806136d0565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8516156140b95773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260409020805460010190555b5f8481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f61414683611d2f565b5f8381526007602090815260408083205473ffffffffffffffffffffffffffffffffffffffff881684526006909252909120919250908183146141a8575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f906141d7906001906149af565b5f83815260096020526040812054600880549394509092849081106141fe576141fe614a13565b905f5260205f2001549050806008838154811061421d5761421d614a13565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061425457614254614a40565b600190038181905f5260205f20015f9055905550505050565b5f600161427984611d2f565b61428391906149af565b73ffffffffffffffffffffffffffffffffffffffff9093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6142d383838361391f565b610dd85773ffffffffffffffffffffffffffffffffffffffff8316614327576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610bcd565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610bcd565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114612d5f575f80fd5b5f602082840312156143b5575f80fd5b81356143c081614378565b9392505050565b5f5b838110156143e15781810151838201526020016143c9565b50505f910152565b5f81518084526144008160208601602086016143c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8215158152604060208201525f6133cf60408301846143e9565b602081525f6143c060208301846143e9565b5f6020828403121561446e575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612475575f80fd5b5f80604083850312156144a9575f80fd5b6144b283614475565b946020939093013593505050565b5f602082840312156144d0575f80fd5b6143c082614475565b5f805f606084860312156144eb575f80fd5b6144f484614475565b925061450260208501614475565b9150604084013590509250925092565b5f8060408385031215614523575f80fd5b8235915061453360208401614475565b90509250929050565b602080825282518282018190525f9190848201906040850190845b8181101561458957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614557565b50909695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f67ffffffffffffffff808411156145dc576145dc614595565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561462257614622614595565b8160405280935085815286868601111561463a575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112614662575f80fd5b6143c0838335602085016145c2565b5f60208284031215614681575f80fd5b813567ffffffffffffffff811115614697575f80fd5b6133cf84828501614653565b5f805f606084860312156146b5575f80fd5b83359250602084013567ffffffffffffffff808211156146d3575f80fd5b6146df87838801614653565b935060408601359150808211156146f4575f80fd5b5061470186828701614653565b9150509250925092565b604081525f61471d60408301856143e9565b828103602084015261472f81856143e9565b95945050505050565b5f8060208385031215614749575f80fd5b823567ffffffffffffffff80821115614760575f80fd5b818501915085601f830112614773575f80fd5b813581811115614781575f80fd5b8660208260051b8501011115614795575f80fd5b60209290920196919550909350505050565b5f805f606084860312156147b9575f80fd5b6147c284614475565b9250602084013567ffffffffffffffff808211156146d3575f80fd5b5f80604083850312156147ef575f80fd5b6147f883614475565b9150602083013567ffffffffffffffff811115614813575f80fd5b61481f85828601614653565b9150509250929050565b5f806040838503121561483a575f80fd5b82359150602083013567ffffffffffffffff811115614813575f80fd5b5f8060408385031215614868575f80fd5b61487183614475565b915061453360208401614475565b8015158114612d5f575f80fd5b5f806040838503121561489d575f80fd5b6148a683614475565b915060208301356148b68161487f565b809150509250929050565b5f805f80608085870312156148d4575f80fd5b6148dd85614475565b93506148eb60208601614475565b925060408501359150606085013567ffffffffffffffff81111561490d575f80fd5b8501601f8101871361491d575f80fd5b61492c878235602084016145c2565b91505092959194509250565b5f8060408385031215614949575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761094257610942614958565b8082018082111561094257610942614958565b8181038181111561094257610942614958565b600181811c908216806149d657607f821691505b602082108103614a0d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a9d57614a9d614958565b5060010190565b601f821115610dd8575f81815260208120601f850160051c81016020861015614aca5750805b601f850160051c820191505b8181101561113d57828155600101614ad6565b815167ffffffffffffffff811115614b0357614b03614595565b614b1781614b1184546149c2565b84614aa4565b602080601f831160018114614b69575f8415614b335750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561113d565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614bb557888601518255948401946001909101908401614b96565b5085821015614bf157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614c128184602087016143c7565b7f20697320616c726561647920616e2061646d696e000000000000000000000000920191825250601401919050565b5f60208284031215614c51575f80fd5b5051919050565b5f60208284031215614c68575f80fd5b81516143c08161487f565b5f81614c8157614c81614958565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f73ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614ce560808301846143e9565b9695505050505050565b5f60208284031215614cff575f80fd5b81516143c08161437856000000000000000000000000ef00a763368c98c361a9a30ce44d24c8fed43844
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106103b4575f3560e01c80636b63d697116101f5578063a22cb46511610114578063cb146879116100a9578063e740010f11610079578063e740010f146108b7578063e985e9c5146108ca578063f2f72fee14610912578063f2fde38b14610925575f80fd5b8063cb1468791461086b578063cdcaf6011461087e578063d547741f14610891578063e51baa02146108a4575f80fd5b8063baa20d35116100e4578063baa20d35146107ff578063c1419def14610848578063c31ee12e14610850578063c87b56dd14610858575f80fd5b8063a22cb465146107bd578063b0ce8b71146107d0578063b79480ff146107d9578063b88d4fde146107ec575f80fd5b80638da5cb5b1161018a5780639768cada1161015a5780639768cada1461077b5780639da2c0421461079a5780639f5025ec146107ad578063a217fddf146107b6575f80fd5b80638da5cb5b146106fd57806391d148541461071b5780639456fbcc1461076057806395d89b4114610773575f80fd5b80637aa205e0116101c55780637aa205e0146106d25780637ee2d9a9146106da578063889ea767146106ed5780638a5a3396146106f5575f80fd5b80636b63d6971461067d57806370a0823114610690578063715018a6146106a357806375b238fc146106ab575f80fd5b806331ae450b116102e15780633eebf57e116102765780635426db6d116102465780635426db6d1461062257806356cf43c71461063557806361f765c7146106485780636352211e1461066a575f80fd5b80633eebf57e146105e157806342842e0e146105e9578063463de928146105fc5780634f6ccce71461060f575f80fd5b80633842e8e1116102b15780633842e8e11461057a578063394803fd1461058d5780633d0950a8146105ae5780633e413bee146105c1575f80fd5b806331ae450b1461051f578063324d9fc31461053457806334f881271461054757806336568abe14610567575f80fd5b806314bfd6d011610357578063248a9ca311610327578063248a9ca3146104ce5780632f2ff15d146104f05780632f745c591461050357806330fd956d14610516575f80fd5b806314bfd6d01461048d5780631785f53c146104a057806318160ddd146104b357806323b872dd146104bb575f80fd5b806306fdde031161039257806306fdde031461040c578063081812fc14610421578063095ea7b3146104595780630cb520cd1461046e575f80fd5b806301ffc9a7146103b8578063037887ed146103e057806306e8337f146103f6575b5f80fd5b6103cb6103c63660046143a5565b610938565b60405190151581526020015b60405180910390f35b6103e8610948565b6040516103d7929190614432565b6103fe6109e4565b6040519081526020016103d7565b610414610a13565b6040516103d7919061444c565b61043461042f36600461445e565b610aa2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d7565b61046c610467366004614498565b610ad6565b005b6103fe61047c36600461445e565b60196020525f908152604090205481565b61043461049b36600461445e565b610ae5565b61046c6104ae3660046144c0565b610b1a565b6008546103fe565b61046c6104c93660046144d9565b610dbe565b6103fe6104dc36600461445e565b5f908152600b602052604090206001015490565b61046c6104fe366004614512565b610ddd565b6103fe610511366004614498565b610e07565b6103fe60125481565b610527610e9d565b6040516103d7919061453c565b61046c610542366004614671565b610f09565b6013546104349073ffffffffffffffffffffffffffffffffffffffff1681565b61046c610575366004614512565b610f1d565b61046c6105883660046146a3565b610f76565b6105a061059b36600461445e565b611145565b6040516103d792919061470b565b61046c6105bc366004614738565b61126c565b6017546104349073ffffffffffffffffffffffffffffffffffffffff1681565b610527611511565b61046c6105f73660046144d9565b61157c565b61046c61060a36600461445e565b611596565b6103fe61061d36600461445e565b6115e6565b61046c6106303660046147a7565b611654565b61046c6106433660046147de565b6117a6565b6103cb6106563660046144c0565b60146020525f908152604090205460ff1681565b61043461067836600461445e565b611b1e565b61046c61068b3660046144c0565b611b28565b6103fe61069e3660046144c0565b611d2f565b61046c611da7565b6103fe7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610414611dba565b61046c6106e8366004614829565b611e46565b610414611ece565b610434611edb565b600a5473ffffffffffffffffffffffffffffffffffffffff16610434565b6103cb610729366004614512565b5f918252600b6020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61046c61076e366004614857565b611ee5565b610414612226565b6103fe61078936600461445e565b600d6020525f908152604090205481565b61046c6107a8366004614671565b612235565b6103fe60155481565b6103fe5f81565b61046c6107cb36600461488c565b612249565b6103fe60185481565b61046c6107e7366004614829565b612254565b61046c6107fa3660046148c1565b6122df565b6108076122eb565b6040805173ffffffffffffffffffffffffffffffffffffffff909616865260208601949094529284019190915215156060830152608082015260a0016103d7565b6103fe600681565b6103fe612334565b61041461086636600461445e565b6123c4565b61046c6108793660046144c0565b61247a565b61046c61088c36600461445e565b61259e565b61046c61089f366004614512565b612702565b61046c6108b23660046144c0565b612726565b61046c6108c5366004614938565b612b1f565b6103cb6108d8366004614857565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b61043461092036600461445e565b612cf0565b61046c6109333660046144c0565b612cff565b5f61094282612d62565b92915050565b5f6060601554610e1061095b9190614985565b601254610968919061499c565b4210156109a957505060408051808201909152601a81527f596f696e6b206973207374696c6c206f6e20636f6f6c646f776e00000000000060208201525f91565b505060408051808201909152601881527f43686f6f43686f6f2063616e20626520796f696e6b65642100000000000000006020820152600191565b5f806109ef60085490565b116109f957505f90565b6001610a0460085490565b610a0e91906149af565b905090565b60605f8054610a21906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4d906149c2565b8015610a985780601f10610a6f57610100808354040283529160200191610a98565b820191905f5260205f20905b815481529060010190602001808311610a7b57829003601f168201915b5050505050905090565b5f610aac82612db7565b505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16610942565b610ae1828233612e15565b5050565b60168181548110610af4575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f610b2481612e22565b73ffffffffffffffffffffffffffffffffffffffff82165f9081527f5329df1543cb285eabd9ee00d915d71c9b1e8ff70a737be4b25897d47fe38cd2602052604090205460ff16610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610c007fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583612e2c565b505f5b601654811015610d79578273ffffffffffffffffffffffffffffffffffffffff1660168281548110610c3757610c37614a13565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610d675760168054610c6d906001906149af565b81548110610c7d57610c7d614a13565b5f918252602090912001546016805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610cb557610cb5614a13565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506016805480610d0b57610d0b614a40565b5f8281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055610d79565b80610d7181614a6d565b915050610c03565b5060405173ffffffffffffffffffffffffffffffffffffffff8316907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a25050565b610dd883838360405180602001604052805f815250612ef0565b505050565b5f828152600b6020526040902060010154610df781612e22565b610e01838361306e565b50505050565b5f610e1183611d2f565b8210610e68576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610bcd565b5073ffffffffffffffffffffffffffffffffffffffff919091165f908152600660209081526040808320938352929052205490565b60606016805480602002602001604051908101604052809291908181526020018280548015610a9857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed5575050505050905090565b610f11613164565b6011610ae18282614ae9565b73ffffffffffffffffffffffffffffffffffffffff81163314610f6c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd88282612e2c565b610fa07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b825f0361106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f8381526002602052604090205473ffffffffffffffffffffffffffffffffffffffff166110f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e20646f6573206e6f742065786973740000000000000000000000006044820152606401610bcd565b60408051808201825283815260208082018490525f868152600e90915291909120815181906111289082614ae9565b506020820151600182019061113d9082614ae9565b505050505050565b600e6020525f908152604090208054819061115f906149c2565b80601f016020809104026020016040519081016040528092919081815260200182805461118b906149c2565b80156111d65780601f106111ad576101008083540402835291602001916111d6565b820191905f5260205f20905b8154815290600101906020018083116111b957829003601f168201915b5050505050908060010180546111eb906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611217906149c2565b80156112625780601f1061123957610100808354040283529160200191611262565b820191905f5260205f20905b81548152906001019060200180831161124557829003601f168201915b5050505050905082565b5f61127681612e22565b816112dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4d75737420616464206174206c65617374206f6e652061646d696e00000000006044820152606401610bcd565b5f5b82811015610e01575f8484838181106112fa576112fa614a13565b905060200201602081019061130f91906144c0565b905073ffffffffffffffffffffffffffffffffffffffff811661138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646d696e206164647265737300000000000000000000006044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff81165f8181527f5329df1543cb285eabd9ee00d915d71c9b1e8ff70a737be4b25897d47fe38cd2602052604090205460ff1615906113e29060146131b7565b6040516020016113f29190614c01565b60405160208183030381529060405290611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd919061444c565b506114647fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758261306e565b50601680546001810182555f9182527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405190917f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33991a2508061150981614a6d565b9150506112df565b6060600c805480602002602001604051908101604052809291908181526020018280548015610a9857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed5575050505050905090565b610dd883838360405180602001604052805f8152506122df565b5f6115a081612e22565b601880549083905560408051828152602081018590527f9574ea781c3bc1bc7602ec10276330d0ffbd853b471ab6997dc6880b2f02b914910160405180910390a1505050565b5f6115f060085490565b8210611631576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081525f600482015260248101839052604401610bcd565b6008828154811061164457611644614a13565b905f5260205f2001549050919050565b61165c613164565b8273ffffffffffffffffffffffffffffffffffffffff81161580611697575073ffffffffffffffffffffffffffffffffffffffff811661dead145b156116e6576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b600f546116f385826133d7565b60408051808201825285815260208082018690525f848152600e90915291909120815181906117229082614ae9565b50602082015160018201906117379082614ae9565b5050505f818152600d60205260408120429055600f80549161175883614a6d565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8716907fbec6f0dc8a3c4bf6f33a6146f908f206a41048c99023f4e9de515d59af332569905f90a35050505050565b6117d07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b8173ffffffffffffffffffffffffffffffffffffffff81161580611871575073ffffffffffffffffffffffffffffffffffffffff811661dead145b156118c0576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b5f6118ca5f611b1e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611949576040517f4c91707f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526014602052604090205460ff16156119c0576040517fdc34873c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b600f5473ffffffffffffffffffffffffffffffffffffffff82165f81815260146020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600c8054918201815584527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116861790915560138054909116909417909355426012558251908101909252808252611a9791849188916133f0565b8473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffde2bfed4d30aa9fd021d257017c776d8307bc9e7d4fbda1dbe19a76a39aeac542604051611af691815260200190565b60405180910390a3611b0782613408565b5f818152600e6020526040902061113d8582614ae9565b5f61094282612db7565b611b30613164565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc09190614c41565b90505f8111611c2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e6f20455243323020746f6b656e7320746f20776974686472617700000000006044820152606401610bcd565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611c66600a5473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303815f875af1158015611cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf99190614c58565b610dd8576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff8216611d7f576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b611daf613164565b611db85f613509565b565b60108054611dc7906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611df3906149c2565b8015611e3e5780601f10611e1557610100808354040283529160200191611e3e565b820191905f5260205f20905b815481529060010190602001808311611e2157829003601f168201915b505050505081565b611e4e613164565b815f03611eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f828152600e60205260409020610dd88282614ae9565b60118054611dc7906149c2565b5f610a0e5f611b1e565b611f0f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b611f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff8116611ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f57687920776f756c6420796f7520646f20746861743f000000000000000000006044820152606401610bcd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561205e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120829190614c41565b90505f81116120ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f54686572652773206e6f7468696e6720746f20776974686472617700000000006044820152606401610bcd565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af115801561215f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121839190614c58565b6121b9576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3d4615e8c603d7e5f1daba3e13f38aab3a8a20067bdb42d4c454ebcd2f0258b38360405161221891815260200190565b60405180910390a350505050565b606060018054610a21906149c2565b61223d613164565b6010610ae18282614ae9565b610ae133838361357f565b61225c613164565b815f036122c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f742075706461746520747261696e204e46540000000000000000006044820152606401610bcd565b5f828152600e60205260409020600101610dd88282614ae9565b610e0184848484612ef0565b5f805f805f6122f95f611b1e565b600c54601254601554929750909550935061231690610e10614985565b601254612323919061499c565b4210159150600f5490509091929394565b6017546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156123a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0e9190614c41565b6060815f0361245d57601180546123da906149c2565b80601f0160208091040260200160405190810160405280929190818152602001828054612406906149c2565b80156124515780601f1061242857610100808354040283529160200191612451565b820191905f5260205f20905b81548152906001019060200180831161243457829003601f168201915b50505050509050919050565b5f828152600e6020526040902080546123da906149c2565b919050565b5f61248481612e22565b73ffffffffffffffffffffffffffffffffffffffff8216612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f49276d206e6f74206c657474696e6720796f752073657420746865205553444360448201527f206164647265737320746f20746865207a65726f2061646472657373000000006064820152608401610bcd565b6017805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7dcd2c12cfcc397a33bdadd64452f757ead5ae363dcd02873aebbb68d4ee47d0905f90a3505050565b6125c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b61262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b5f81116126bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f596f696e6b2074696d6572206d7573742062652067726561746572207468616e60448201527f20300000000000000000000000000000000000000000000000000000000000006064820152608401610bcd565b601580549082905560408051828152602081018490527f839a7fc22525a62186596452ab6a6114ae14dd5ca39cac73e8bfd7d58ae507fe910160405180910390a15050565b5f828152600b602052604090206001015461271c81612e22565b610e018383612e2c565b6127507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610729565b6127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420616e2061646d696e00000000000000000000000000000000000000006044820152606401610bcd565b8073ffffffffffffffffffffffffffffffffffffffff811615806127f1575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15612840576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b5f8061284a610948565b915091508161288757806040517f15febbc2000000000000000000000000000000000000000000000000000000008152600401610bcd919061444c565b5f6128915f611b1e565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612910576040517f4c91707f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526014602052604090205460ff1615612987576040517fdc34873c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff81165f81815260146020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600c8054918201815584527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116861790915560138054909116909417909355426012558251908101909252808252612a5b91839188916133f0565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffde2bfed4d30aa9fd021d257017c776d8307bc9e7d4fbda1dbe19a76a39aeac542604051612aba91815260200190565b60405180910390a3612acb81613408565b60405142815273ffffffffffffffffffffffffffffffffffffffff86169033907f3207dae3147fa092fdbd1fe811804357c9e51b97bb1625a35892b6e02ffff8999060200160405180910390a35050505050565b815f03612b5b576040517fa94ce2c200000000000000000000000000000000000000000000000000000000815260048101839052602401610bcd565b601854811015612ba5576018546040517f25c3f46e000000000000000000000000000000000000000000000000000000008152610bcd918391600401918252602082015260400190565b60175473ffffffffffffffffffffffffffffffffffffffff166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018490526064016020604051808303815f875af1158015612c39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c5d9190614c58565b612c93576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526019602052604081208054839290612cb090849061499c565b9091555050604051818152829033907fa0dc50296ad89758bb723002622b8c17928c370d51794357af78d2fa96598aa49060200160405180910390a35050565b600c8181548110610af4575f80fd5b612d07613164565b73ffffffffffffffffffffffffffffffffffffffff8116612d56576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b612d5f81613509565b50565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061094257506109428261367b565b5f8181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610942576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610bcd565b610dd883838360016136d0565b612d5f8133613898565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612ee9575f838152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610942565b505f610942565b8273ffffffffffffffffffffffffffffffffffffffff81161580612f2b575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15612f7a576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b825f03613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f547261696e2063616e206f6e6c79206265206d6f7665642062792061646d696e60448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610bcd565b61301c61301584611b1e565b338561391f565b61305b576040517f26e6a53100000000000000000000000000000000000000000000000000000000815233600482015260248101849052604401610bcd565b613067858585856133f0565b5050505050565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612ee9575f838152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556131023390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610942565b600a5473ffffffffffffffffffffffffffffffffffffffff163314611db8576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610bcd565b6060825f6131c6846002614985565b6131d190600261499c565b67ffffffffffffffff8111156131e9576131e9614595565b6040519080825280601f01601f191660200182016040528015613213576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061324957613249614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106132ab576132ab614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6132e5856002614985565b6132f090600161499c565b90505b600181111561338c577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061333157613331614a13565b1a60f81b82828151811061334757613347614a13565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049290921c9161338581614c73565b90506132f3565b5081156133cf576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610bcd565b949350505050565b610ae1828260405180602001604052805f8152506139e0565b6133fb8484846139f7565b610e013385858585613b30565b8073ffffffffffffffffffffffffffffffffffffffff81161580613443575073ffffffffffffffffffffffffffffffffffffffff811661dead145b15613492576040517f627cd64200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610bcd565b600f5461349f83826133d7565b5f818152600d60205260408120429055600f8054916134bd83614a6d565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8516907fbec6f0dc8a3c4bf6f33a6146f908f206a41048c99023f4e9de515d59af332569905f90a3505050565b600a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b73ffffffffffffffffffffffffffffffffffffffff82166135e4576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610bcd565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610942575061094282613d1d565b80806136f1575073ffffffffffffffffffffffffffffffffffffffff821615155b15613844575f61370084612db7565b905073ffffffffffffffffffffffffffffffffffffffff83161580159061375357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613791575073ffffffffffffffffffffffffffffffffffffffff8082165f9081526005602090815260408083209387168352929052205460ff16155b156137e0576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610bcd565b811561384257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ae1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610bcd565b5f73ffffffffffffffffffffffffffffffffffffffff8316158015906133cf57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806139ab575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209387168352929052205460ff165b806133cf5750505f9081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b6139ea8383613dff565b610dd8335f858585613b30565b73ffffffffffffffffffffffffffffffffffffffff8216613a46576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f613a5283835f613eac565b905073ffffffffffffffffffffffffffffffffffffffff8116613aa4576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610bcd565b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610bcd565b73ffffffffffffffffffffffffffffffffffffffff83163b15613067576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290613ba5908890889087908790600401614ca7565b6020604051808303815f875af1925050508015613bfd575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613bfa91810190614cef565b60015b613c8a573d808015613c2a576040519150601f19603f3d011682016040523d82523d5f602084013e613c2f565b606091505b5080515f03613c82576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a02000000000000000000000000000000000000000000000000000000001461113d576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610bcd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480613daf57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061094257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610942565b73ffffffffffffffffffffffffffffffffffffffff8216613e4e576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f613e5a83835f613eac565b905073ffffffffffffffffffffffffffffffffffffffff811615610dd8576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610bcd565b5f80613eb9858585613fc5565b905073ffffffffffffffffffffffffffffffffffffffff8116613f2257613f1d84600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613f5f565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613f5f57613f5f818561413c565b73ffffffffffffffffffffffffffffffffffffffff8516613f8857613f83846141c6565b6133cf565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146133cf576133cf858561426d565b5f8281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615613ffe57613ffe8184866142c8565b73ffffffffffffffffffffffffffffffffffffffff811615614071576140265f855f806136d0565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8516156140b95773ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260409020805460010190555b5f8481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f61414683611d2f565b5f8381526007602090815260408083205473ffffffffffffffffffffffffffffffffffffffff881684526006909252909120919250908183146141a8575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f906141d7906001906149af565b5f83815260096020526040812054600880549394509092849081106141fe576141fe614a13565b905f5260205f2001549050806008838154811061421d5761421d614a13565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061425457614254614a40565b600190038181905f5260205f20015f9055905550505050565b5f600161427984611d2f565b61428391906149af565b73ffffffffffffffffffffffffffffffffffffffff9093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6142d383838361391f565b610dd85773ffffffffffffffffffffffffffffffffffffffff8316614327576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610bcd565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610bcd565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114612d5f575f80fd5b5f602082840312156143b5575f80fd5b81356143c081614378565b9392505050565b5f5b838110156143e15781810151838201526020016143c9565b50505f910152565b5f81518084526144008160208601602086016143c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8215158152604060208201525f6133cf60408301846143e9565b602081525f6143c060208301846143e9565b5f6020828403121561446e575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612475575f80fd5b5f80604083850312156144a9575f80fd5b6144b283614475565b946020939093013593505050565b5f602082840312156144d0575f80fd5b6143c082614475565b5f805f606084860312156144eb575f80fd5b6144f484614475565b925061450260208501614475565b9150604084013590509250925092565b5f8060408385031215614523575f80fd5b8235915061453360208401614475565b90509250929050565b602080825282518282018190525f9190848201906040850190845b8181101561458957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614557565b50909695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f67ffffffffffffffff808411156145dc576145dc614595565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561462257614622614595565b8160405280935085815286868601111561463a575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112614662575f80fd5b6143c0838335602085016145c2565b5f60208284031215614681575f80fd5b813567ffffffffffffffff811115614697575f80fd5b6133cf84828501614653565b5f805f606084860312156146b5575f80fd5b83359250602084013567ffffffffffffffff808211156146d3575f80fd5b6146df87838801614653565b935060408601359150808211156146f4575f80fd5b5061470186828701614653565b9150509250925092565b604081525f61471d60408301856143e9565b828103602084015261472f81856143e9565b95945050505050565b5f8060208385031215614749575f80fd5b823567ffffffffffffffff80821115614760575f80fd5b818501915085601f830112614773575f80fd5b813581811115614781575f80fd5b8660208260051b8501011115614795575f80fd5b60209290920196919550909350505050565b5f805f606084860312156147b9575f80fd5b6147c284614475565b9250602084013567ffffffffffffffff808211156146d3575f80fd5b5f80604083850312156147ef575f80fd5b6147f883614475565b9150602083013567ffffffffffffffff811115614813575f80fd5b61481f85828601614653565b9150509250929050565b5f806040838503121561483a575f80fd5b82359150602083013567ffffffffffffffff811115614813575f80fd5b5f8060408385031215614868575f80fd5b61487183614475565b915061453360208401614475565b8015158114612d5f575f80fd5b5f806040838503121561489d575f80fd5b6148a683614475565b915060208301356148b68161487f565b809150509250929050565b5f805f80608085870312156148d4575f80fd5b6148dd85614475565b93506148eb60208601614475565b925060408501359150606085013567ffffffffffffffff81111561490d575f80fd5b8501601f8101871361491d575f80fd5b61492c878235602084016145c2565b91505092959194509250565b5f8060408385031215614949575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761094257610942614958565b8082018082111561094257610942614958565b8181038181111561094257610942614958565b600181811c908216806149d657607f821691505b602082108103614a0d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a9d57614a9d614958565b5060010190565b601f821115610dd8575f81815260208120601f850160051c81016020861015614aca5750805b601f850160051c820191505b8181101561113d57828155600101614ad6565b815167ffffffffffffffff811115614b0357614b03614595565b614b1781614b1184546149c2565b84614aa4565b602080601f831160018114614b69575f8415614b335750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561113d565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614bb557888601518255948401946001909101908401614b96565b5085821015614bf157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251614c128184602087016143c7565b7f20697320616c726561647920616e2061646d696e000000000000000000000000920191825250601401919050565b5f60208284031215614c51575f80fd5b5051919050565b5f60208284031215614c68575f80fd5b81516143c08161487f565b5f81614c8157614c81614958565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f73ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614ce560808301846143e9565b9695505050505050565b5f60208284031215614cff575f80fd5b81516143c08161437856
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ef00a763368c98c361a9a30ce44d24c8fed43844
-----Decoded View---------------
Arg [0] : initialHolder (address): 0xef00A763368C98C361a9a30cE44D24c8Fed43844
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ef00a763368c98c361a9a30ce44d24c8fed43844
🤖 Code Reader
Generate instant answers for your smart contract questions using Al Models. Read more.
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.