Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Quests
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 9999999 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";import {BitMaps} from "@openzeppelin/contracts/utils/structs/BitMaps.sol";import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {IPlayers} from "./interfaces/IPlayers.sol";import {ISolidlyRouter, Route} from "./interfaces/external/ISolidlyRouter.sol";import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";import {IActivityPoints, IActivityPointsCaller, ActivityType} from "./ActivityPoints/interfaces/IActivityPoints.sol";// solhint-disable-next-line no-global-importimport "./globals/all.sol";contract Quests is UUPSUpgradeable, OwnableUpgradeable, IActivityPointsCaller {using Math for uint256;using BitMaps for BitMaps.BitMap;event AddQuests(QuestInput[] quests, MinimumRequirement[3][] minimumRequirements);event EditQuests(QuestInput[] quests, MinimumRequirement[3][] minimumRequirements);event RemoveQuest(uint256 questId);event ActivateQuest(address from, uint256 playerId, uint256 questId);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)pragma solidity ^0.8.20;import {ContextUpgradeable} from "../utils/ContextUpgradeable.sol";import {Initializable} from "../proxy/utils/Initializable.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** The initial owner is set to the address provided by the deployer. This can* later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {/// @custom:storage-location erc7201:openzeppelin.storage.Ownablestruct OwnableStorage {address _owner;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)pragma solidity ^0.8.20;/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```solidity* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }** contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (proxy/utils/UUPSUpgradeable.sol)pragma solidity ^0.8.20;import {IERC1822Proxiable} from "@openzeppelin/contracts/interfaces/draft-IERC1822.sol";import {ERC1967Utils} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol";import {Initializable} from "./Initializable.sol";/*** @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an* {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.** A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is* reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing* `UUPSUpgradeable` with a custom implementation of upgrades.** The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.*/abstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {/// @custom:oz-upgrades-unsafe-allow state-variable-immutableaddress private immutable __self = address(this);/*** @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`* and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)pragma solidity ^0.8.20;import {Initializable} from "../proxy/utils/Initializable.sol";/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract ContextUpgradeable is Initializable {function __Context_init() internal onlyInitializing {}function __Context_init_unchained() internal onlyInitializing {}function _msgSender() internal view virtual returns (address) {return msg.sender;}
1234567891011121314151617181920// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)pragma solidity ^0.8.20;/*** @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified* proxy whose upgrades are fully controlled by the current implementation.*/interface IERC1822Proxiable {/*** @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation* address.** IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this* function revert if invoked through a proxy.*/function proxiableUUID() external view returns (bytes32);}
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)pragma solidity ^0.8.20;/*** @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.*/interface IERC1967 {/*** @dev Emitted when the implementation is upgraded.*/event Upgraded(address indexed implementation);/*** @dev Emitted when the admin account has changed.*/event AdminChanged(address previousAdmin, address newAdmin);/*** @dev Emitted when the beacon is changed.*/event BeaconUpgraded(address indexed beacon);}
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)pragma solidity ^0.8.20;/*** @dev This is the interface that {BeaconProxy} expects of its beacon.*/interface IBeacon {/*** @dev Must return an address that can be used as a delegate call target.** {UpgradeableBeacon} will check that this address is a contract.*/function implementation() external view returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (proxy/ERC1967/ERC1967Utils.sol)pragma solidity ^0.8.21;import {IBeacon} from "../beacon/IBeacon.sol";import {IERC1967} from "../../interfaces/IERC1967.sol";import {Address} from "../../utils/Address.sol";import {StorageSlot} from "../../utils/StorageSlot.sol";/*** @dev This library provides getters and event emitting update functions for* https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.*/library ERC1967Utils {/*** @dev Storage slot with the address of the current implementation.* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1.*/// solhint-disable-next-line private-vars-leading-underscorebytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;/*** @dev The `implementation` of the proxy is invalid.*/error ERC1967InvalidImplementation(address implementation);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/IERC1155.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC-1155 compliant contract, as defined in the* https://eips.ethereum.org/EIPS/eip-1155[ERC].*/interface IERC1155 is IERC165 {/*** @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.*/event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);/*** @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all* transfers.*/event TransferBatch(address indexed operator,address indexed from,address indexed to,uint256[] ids,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 standard as defined in the ERC.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)pragma solidity ^0.8.20;import {Errors} from "./Errors.sol";/*** @dev Collection of functions related to the address type*/library Address {/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to* `recipient`, forwarding all available gas and reverting on errors.** https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost* of certain opcodes, possibly making contracts go over the 2300 gas limit* imposed by `transfer`, making them unable to receive funds via* `transfer`. {sendValue} removes this limitation.** https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)pragma solidity ^0.8.20;/*** @dev Collection of common custom errors used in multiple contracts** IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.* It is recommended to avoid relying on the error API for critical functionality.** _Available since v5.1._*/library Errors {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error InsufficientBalance(uint256 balance, uint256 needed);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedCall();/*** @dev The deployment failed.
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[ERC].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)pragma solidity ^0.8.20;import {Panic} from "../Panic.sol";import {SafeCast} from "./SafeCast.sol";/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an success flag (no overflow).*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)// This file was procedurally generated from scripts/generate/templates/SafeCast.js.pragma solidity ^0.8.20;/*** @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow* checks.** Downcasting from uint256/int256 in Solidity does not revert on overflow. This can* easily result in undesired exploitation or bugs, since developers usually* assume that overflows raise errors. `SafeCast` restores this intuition by* reverting the transaction when such an operation overflows.** Using this library instead of the unchecked operations eliminates an entire* class of bugs, so it's recommended to use it always.*/library SafeCast {/*** @dev Value doesn't fit in an uint of `bits` size.*/error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);/*** @dev An int value doesn't fit in an uint of `bits` size.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)pragma solidity ^0.8.20;/*** @dev Helper library for emitting standardized panic codes.** ```solidity* contract Example {* using Panic for uint256;** // Use any of the declared internal constants* function foo() { Panic.GENERIC.panic(); }** // Alternatively* function foo() { Panic.panic(Panic.GENERIC); }* }* ```** Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].** _Available since v5.1._*/// slither-disable-next-line unused-statelibrary Panic {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.pragma solidity ^0.8.20;/*** @dev Library for reading and writing primitive types to specific storage slots.** Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.* This library helps with reading and writing to such slots without the need for inline assembly.** The functions in this library return Slot structs that contain a `value` member that can be used to read or write.** Example usage to set ERC-1967 implementation slot:* ```solidity* contract ERC1967 {* // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;** function _getImplementation() internal view returns (address) {* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;* }** function _setImplementation(address newImplementation) internal {* require(newImplementation.code.length > 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/BitMaps.sol)pragma solidity ^0.8.20;/*** @dev Library for managing uint256 to bool mapping in a compact and efficient way, provided the keys are sequential.* Largely inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor].** BitMaps pack 256 booleans across each bit of a single 256-bit slot of `uint256` type.* Hence booleans corresponding to 256 _sequential_ indices would only consume a single slot,* unlike the regular `bool` which would consume an entire slot for a single value.** This results in gas savings in two ways:** - Setting a zero value to non-zero only once every 256 times* - Accessing the same warm slot for every 256 _sequential_ indices*/library BitMaps {struct BitMap {mapping(uint256 bucket => uint256) _data;}/*** @dev Returns whether the bit at `index` is set.*/function get(BitMap storage bitmap, uint256 index) internal view returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;enum ActivityType {NONE,//// BLUE TICKETS//instantactions_evt_doinstantactions,instantvrfactions_evt_doinstantvrfactions,passiveactions_evt_claimpassiveaction,quests_evt_questcompleted,shop_evt_buy, // + shop_evt_buybatch,shop_evt_sell, // + shop_evt_sellbatch,wishingwell_evt_donate,wishingwell_evt_donatetoclan,orderbook_evt_ordersmatched,orderbook_evt_claimedtokens,orderbook_evt_claimednfts,// playersplayers_evt_actionfinished,players_evt_addxp,players_evt_levelup,players_evt_boostfinished,players_evt_dailyreward,players_evt_weeklyreward,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {Skill, Attire, CombatStyle, CombatStats} from "./misc.sol";import {GuaranteedReward, RandomReward} from "./rewards.sol";enum ActionQueueStrategy {OVERWRITE,APPEND,KEEP_LAST_IN_PROGRESS}struct QueuedActionInput {Attire attire;uint16 actionId;uint16 regenerateId; // Food (combat), maybe something for non-combat lateruint16 choiceId; // Melee/Ranged/Magic (combat), logs, ore (non-combat)uint16 rightHandEquipmentTokenId; // Axe/Sword/bow, can be emptyuint16 leftHandEquipmentTokenId; // Shield, can be emptyuint24 timespan; // How long to queue the action foruint8 combatStyle; // CombatStyle specific style of combatuint40 petId; // id of the pet (can be empty)}struct QueuedAction {uint16 actionId;
123456789101112// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import "./actions.sol";import "./items.sol";import "./misc.sol";import "./players.sol";import "./rewards.sol";import "./quests.sol";import "./promotions.sol";import "./clans.sol";import "./pets.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {IBank} from "../interfaces/IBank.sol";enum ClanRank {NONE, // Not in a clanCOMMONER, // Member of the clanSCOUT, // Invite and kick commonersCOLONEL, // Can launch attacks and assign combatantsTREASURER, // Can withdraw from bankLEADER, // Can edit clan detailsOWNER // Can do everything and transfer ownership}enum BattleResultEnum {DRAW,WIN,LOSE}struct ClanBattleInfo {uint40 lastClanIdAttackOtherClanIdCooldownTimestamp;uint8 numReattacks;uint40 lastOtherClanIdAttackClanIdCooldownTimestamp;uint8 numReattacksOtherClan;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;uint16 constant NONE = 0;uint16 constant COMBAT_BASE = 2048;// Meleeuint16 constant SWORD_BASE = COMBAT_BASE;uint16 constant BRONZE_SWORD = SWORD_BASE;// Woodcutting (2816 - 3071)uint16 constant WOODCUTTING_BASE = 2816;uint16 constant BRONZE_AXE = WOODCUTTING_BASE;// Firemaking (3328 - 3583)uint16 constant FIRE_BASE = 3328;uint16 constant MAGIC_FIRE_STARTER = FIRE_BASE;uint16 constant FIRE_MAX = FIRE_BASE + 255;// Fishing (3072 - 3327)uint16 constant FISHING_BASE = 3072;uint16 constant NET_STICK = FISHING_BASE;// Mining (2560 - 2815)uint16 constant MINING_BASE = 2560;uint16 constant BRONZE_PICKAXE = MINING_BASE;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;enum BoostType {NONE,ANY_XP,COMBAT_XP,NON_COMBAT_XP,GATHERING,ABSENCE,PASSIVE_SKIP_CHANCE,// Clan warsPVP_BLOCK,PVP_REATTACK,PVP_SUPER_ATTACK,// Combat statsCOMBAT_FIXED}struct Equipment {uint16 itemTokenId;uint24 amount;}enum Skill {NONE,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {Skill} from "./misc.sol";enum PetSkin {NONE,DEFAULT,OG,ONEKIN,FROST,CRYSTAL,ANNIV1,KRAGSTYR}enum PetEnhancementType {NONE,MELEE,MAGIC,RANGED,DEFENCE,HEALTH,MELEE_AND_DEFENCE,MAGIC_AND_DEFENCE,RANGED_AND_DEFENCE
12345678910111213141516171819// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {QueuedAction} from "./actions.sol";import {Skill, BoostType, CombatStats, Equipment} from "./misc.sol";import {PlayerQuest} from "./quests.sol";// 4 bytes for each level. 0x00000000 is the first level, 0x00000054 is the second, etc.bytes constant XP_BYTES = hex"0000000000000054000000AE0000010E00000176000001E60000025E000002DE00000368000003FD0000049B00000546000005FC000006C000000792000008730000096400000A6600000B7B00000CA400000DE100000F36000010A200001229000013CB0000158B0000176B0000196E00001B9400001DE20000205A000022FF000025D5000028DD00002C1E00002F99000033540000375200003B9A000040300000451900004A5C00004FFF0000560900005C810000637000006ADD000072D100007B570000847900008E42000098BE0000A3F90000B0020000BCE70000CAB80000D9860000E9630000FA6200010C990001201D0001350600014B6F0001637300017D2E000198C10001B64E0001D5F80001F7E600021C430002433B00026CFD000299BE0002C9B30002FD180003342B00036F320003AE730003F23D00043AE3000488BE0004DC2F0005359B000595700005FC2400066A360006E02D00075E990007E6160008774C000912EB0009B9B4000A6C74000B2C06000BF956000CD561000DC134000EBDF3000FCCD40010EF2400122648001373BF0014D9230016582C0017F2B00019AAA9001B8234001D7B95001F99390021DDBC00244BE60026E6B60029B15F002CAF51002FE43A0033540D00370303003AF5A4003F30CC0043B9B0004895E3004DCB600053609100595C53005FC6030066A585006E034D0075E86C007E5E980087703B0091287D009B935300A6BD8F00B2B4EE00BF882800CD470500DC026F00EBCC8500FCB8B7010EDBD5";uint256 constant MAX_LEVEL = 140; // Original max leveluint256 constant MAX_LEVEL_1 = 160; // TODO: Update lateruint256 constant MAX_LEVEL_2 = 190; // TODO: Update laterenum EquipPosition {NONE,HEAD,NECK,BODY,ARMS,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;enum Promotion {NONE,STARTER,HALLOWEEN_2023,XMAS_2023,HALLOWEEN_2024,HOLIDAY4, // Just have placeholders for nowHOLIDAY5,HOLIDAY6,HOLIDAY7,HOLIDAY8,HOLIDAY9,HOLIDAY10}enum PromotionMintStatus {NONE,SUCCESS,PROMOTION_ALREADY_CLAIMED,ORACLE_NOT_CALLED,MINTING_OUTSIDE_AVAILABLE_DATE,PLAYER_DOES_NOT_QUALIFY,PLAYER_NOT_HIT_ENOUGH_CLAIMS_FOR_STREAK_BONUS,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {Skill} from "./misc.sol";struct QuestInput {uint16 dependentQuestId; // The quest that must be completed before this one can be starteduint16 actionId1; // action to douint16 actionNum1; // how many (up to 65535)uint16 actionId2; // another action to douint16 actionNum2; // how many (up to 65535)uint16 actionChoiceId; // actionChoice to performuint16 actionChoiceNum; // how many to do (base number), (up to 65535)Skill skillReward; // The skill to reward XP touint24 skillXPGained; // The amount of XP to give (up to 65535)uint16 rewardItemTokenId1; // Reward an itemuint16 rewardAmount1; // amount of the reward (up to 65535)uint16 rewardItemTokenId2; // Reward another itemuint16 rewardAmount2; // amount of the reward (up to 65535)uint16 burnItemTokenId; // Burn an itemuint16 burnAmount; // amount of the burn (up to 65535)uint16 questId; // Unique id for this questbool isFullModeOnly; // If true this quest requires the user be evolveduint8 worldLocation; // 0 is the main starting world}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import {BoostType, Equipment} from "./misc.sol";struct GuaranteedReward {uint16 itemTokenId;uint16 rate; // num per hour (base 10, 1 decimal) for actions and num per duration for passive actions}struct RandomReward {uint16 itemTokenId;uint16 chance; // out of 65535uint8 amount; // out of 255}struct PendingRandomReward {uint16 actionId;uint40 startTime;uint24 xpElapsedTime;uint16 boostItemTokenId;uint24 elapsedTime;uint40 boostStartTime; // When the boost was starteduint24 sentinelElapsedTime;// Full equipment at the time this was generateduint8 fullAttireBonusRewardsPercent;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;struct Route {address from;address to;bool stable;}interface ISolidlyRouter {function swapExactETHForTokens(uint256 amountOutMin,Route[] calldata routes,address to,uint256 deadline) external payable returns (uint256[] memory amounts);function swapETHForExactTokens(uint256 amountOut,Route[] calldata routes,address to,uint256 deadline) external payable returns (uint256[] memory amounts);function swapExactTokensForETH(uint256 amountIn,
12345678910111213141516171819202122// SPDX-License-Identifier: MITpragma solidity ^0.8.28;interface IBank {function initialize() external;function initializeAddresses(uint256 clanId,address bankRegistry,address bankRelay,address playerNFT,address itemNFT,address clans,address players,address lockedBankVaults,address raids) external;function depositToken(address sender, address from, uint256 playerId, address token, uint256 amount) external;function setAllowBreachedCapacity(bool allow) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.28;import "../globals/misc.sol";import "../globals/players.sol";interface IPlayers {function clearEverythingBeforeTokenTransfer(address from, uint256 tokenId) external;function beforeTokenTransferTo(address to, uint256 tokenId) external;function getURI(uint256 playerId,string calldata name,string calldata avatarName,string calldata avatarDescription,string calldata imageURI) external view returns (string memory);function mintedPlayer(address from,uint256 playerId,Skill[2] calldata startSkills,bool makeActive,uint256[] calldata startingItemTokenIds,uint256[] calldata startingAmounts
1234567891011121314151617181920212223242526{"evmVersion": "cancun","optimizer": {"enabled": true,"runs": 9999999,"details": {"yul": true}},"viaIR": true,"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"metadata": {"useLiteralContent": true},"libraries": {}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ActivatingQuestAlreadyActivated","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CannotChangeBackToFullMode","type":"error"},{"inputs":[],"name":"CannotStartFullModeQuest","type":"error"},{"inputs":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"}],"name":"DependentQuestNotCompleted","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidActionChoiceNum","type":"error"},{"inputs":[],"name":"InvalidActionNum","type":"error"},{"inputs":[],"name":"InvalidActiveQuest","type":"error"},{"inputs":[],"name":"InvalidBrushAmount","type":"error"},{"inputs":[],"name":"InvalidBurnAmount","type":"error"},{"inputs":[],"name":"InvalidFTMAmount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidMinimumRequirement","type":"error"},{"inputs":[],"name":"InvalidQuestId","type":"error"},{"inputs":[],"name":"InvalidRewardAmount","type":"error"},{"inputs":[],"name":"InvalidSkillXPGained","type":"error"},{"inputs":[{"internalType":"uint256","name":"questsLength","type":"uint256"},{"internalType":"uint256","name":"minimumRequirementsLength","type":"uint256"}],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"NoActiveQuest","type":"error"},{"inputs":[],"name":"NotBridge","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwnerOfPlayerAndActive","type":"error"},{"inputs":[],"name":"NotPlayers","type":"error"},{"inputs":[],"name":"NotSupported","type":"error"},{"inputs":[],"name":"NotWorld","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":[],"name":"QuestCompletedAlready","type":"error"},{"inputs":[],"name":"QuestDoesntExist","type":"error"},{"inputs":[],"name":"QuestWithIdAlreadyExists","type":"error"},{"inputs":[],"name":"RefundFailed","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"playerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"questId","type":"uint256"}],"name":"ActivateQuest","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"},{"internalType":"uint16","name":"actionId1","type":"uint16"},{"internalType":"uint16","name":"actionNum1","type":"uint16"},{"internalType":"uint16","name":"actionId2","type":"uint16"},{"internalType":"uint16","name":"actionNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceId","type":"uint16"},{"internalType":"uint16","name":"actionChoiceNum","type":"uint16"},{"internalType":"enum Skill","name":"skillReward","type":"uint8"},{"internalType":"uint24","name":"skillXPGained","type":"uint24"},{"internalType":"uint16","name":"rewardItemTokenId1","type":"uint16"},{"internalType":"uint16","name":"rewardAmount1","type":"uint16"},{"internalType":"uint16","name":"rewardItemTokenId2","type":"uint16"},{"internalType":"uint16","name":"rewardAmount2","type":"uint16"},{"internalType":"uint16","name":"burnItemTokenId","type":"uint16"},{"internalType":"uint16","name":"burnAmount","type":"uint16"},{"internalType":"uint16","name":"questId","type":"uint16"},{"internalType":"bool","name":"isFullModeOnly","type":"bool"},{"internalType":"uint8","name":"worldLocation","type":"uint8"}],"indexed":false,"internalType":"struct QuestInput[]","name":"quests","type":"tuple[]"},{"components":[{"internalType":"enum Skill","name":"skill","type":"uint8"},{"internalType":"uint64","name":"xp","type":"uint64"}],"indexed":false,"internalType":"struct Quests.MinimumRequirement[3][]","name":"minimumRequirements","type":"tuple[3][]"}],"name":"AddQuests","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"playerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"questId","type":"uint256"}],"name":"DeactivateQuest","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"},{"internalType":"uint16","name":"actionId1","type":"uint16"},{"internalType":"uint16","name":"actionNum1","type":"uint16"},{"internalType":"uint16","name":"actionId2","type":"uint16"},{"internalType":"uint16","name":"actionNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceId","type":"uint16"},{"internalType":"uint16","name":"actionChoiceNum","type":"uint16"},{"internalType":"enum Skill","name":"skillReward","type":"uint8"},{"internalType":"uint24","name":"skillXPGained","type":"uint24"},{"internalType":"uint16","name":"rewardItemTokenId1","type":"uint16"},{"internalType":"uint16","name":"rewardAmount1","type":"uint16"},{"internalType":"uint16","name":"rewardItemTokenId2","type":"uint16"},{"internalType":"uint16","name":"rewardAmount2","type":"uint16"},{"internalType":"uint16","name":"burnItemTokenId","type":"uint16"},{"internalType":"uint16","name":"burnAmount","type":"uint16"},{"internalType":"uint16","name":"questId","type":"uint16"},{"internalType":"bool","name":"isFullModeOnly","type":"bool"},{"internalType":"uint8","name":"worldLocation","type":"uint8"}],"indexed":false,"internalType":"struct QuestInput[]","name":"quests","type":"tuple[]"},{"components":[{"internalType":"enum Skill","name":"skill","type":"uint8"},{"internalType":"uint64","name":"xp","type":"uint64"}],"indexed":false,"internalType":"struct Quests.MinimumRequirement[3][]","name":"minimumRequirements","type":"tuple[3][]"}],"name":"EditQuests","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"playerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"questId","type":"uint256"}],"name":"QuestCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"playerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"questId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"extraItemTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"extraItemAMounts","type":"uint256[]"},{"indexed":false,"internalType":"enum Skill[]","name":"extraSkills","type":"uint8[]"},{"indexed":false,"internalType":"uint256[]","name":"extraSkillXPs","type":"uint256[]"}],"name":"QuestCompletedFromBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"questId","type":"uint256"}],"name":"RemoveQuest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"playerId","type":"uint256"},{"components":[{"internalType":"uint32","name":"questId","type":"uint32"},{"internalType":"uint16","name":"actionCompletedNum1","type":"uint16"},{"internalType":"uint16","name":"actionCompletedNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceCompletedNum","type":"uint16"},{"internalType":"uint16","name":"burnCompletedAmount","type":"uint16"}],"indexed":false,"internalType":"struct PlayerQuest","name":"playerQuest","type":"tuple"}],"name":"UpdateQuestProgress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"playerId","type":"uint256"},{"internalType":"uint256","name":"questId","type":"uint256"}],"name":"activateQuest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"}],"name":"activeQuests","outputs":[{"components":[{"internalType":"uint32","name":"questId","type":"uint32"},{"internalType":"uint16","name":"actionCompletedNum1","type":"uint16"},{"internalType":"uint16","name":"actionCompletedNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceCompletedNum","type":"uint16"},{"internalType":"uint16","name":"burnCompletedAmount","type":"uint16"}],"internalType":"struct PlayerQuest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"},{"internalType":"uint16","name":"actionId1","type":"uint16"},{"internalType":"uint16","name":"actionNum1","type":"uint16"},{"internalType":"uint16","name":"actionId2","type":"uint16"},{"internalType":"uint16","name":"actionNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceId","type":"uint16"},{"internalType":"uint16","name":"actionChoiceNum","type":"uint16"},{"internalType":"enum Skill","name":"skillReward","type":"uint8"},{"internalType":"uint24","name":"skillXPGained","type":"uint24"},{"internalType":"uint16","name":"rewardItemTokenId1","type":"uint16"},{"internalType":"uint16","name":"rewardAmount1","type":"uint16"},{"internalType":"uint16","name":"rewardItemTokenId2","type":"uint16"},{"internalType":"uint16","name":"rewardAmount2","type":"uint16"},{"internalType":"uint16","name":"burnItemTokenId","type":"uint16"},{"internalType":"uint16","name":"burnAmount","type":"uint16"},{"internalType":"uint16","name":"questId","type":"uint16"},{"internalType":"bool","name":"isFullModeOnly","type":"bool"},{"internalType":"uint8","name":"worldLocation","type":"uint8"}],"internalType":"struct QuestInput[]","name":"quests","type":"tuple[]"},{"components":[{"internalType":"enum Skill","name":"skill","type":"uint8"},{"internalType":"uint64","name":"xp","type":"uint64"}],"internalType":"struct Quests.MinimumRequirement[3][]","name":"minimumRequirements","type":"tuple[3][]"}],"name":"addQuests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"questId","type":"uint256"}],"name":"allFixedQuests","outputs":[{"components":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"},{"internalType":"uint16","name":"actionId1","type":"uint16"},{"internalType":"uint16","name":"actionNum1","type":"uint16"},{"internalType":"uint16","name":"actionId2","type":"uint16"},{"internalType":"uint16","name":"actionNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceId","type":"uint16"},{"internalType":"uint16","name":"actionChoiceNum","type":"uint16"},{"internalType":"enum Skill","name":"skillReward","type":"uint8"},{"internalType":"uint24","name":"skillXPGained","type":"uint24"},{"internalType":"uint16","name":"rewardItemTokenId1","type":"uint16"},{"internalType":"uint16","name":"rewardAmount1","type":"uint16"},{"internalType":"uint16","name":"rewardItemTokenId2","type":"uint16"},{"internalType":"uint16","name":"rewardAmount2","type":"uint16"},{"internalType":"uint16","name":"burnItemTokenId","type":"uint16"},{"internalType":"uint16","name":"burnAmount","type":"uint16"},{"internalType":"uint16","name":"reserved","type":"uint16"},{"internalType":"bytes1","name":"packedData","type":"bytes1"}],"internalType":"struct Quest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"minimumBrushExpected","type":"uint256"},{"internalType":"bool","name":"useExactETH","type":"bool"}],"name":"buyBrush","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"playerId","type":"uint256"},{"internalType":"uint256","name":"minimumBrushBack","type":"uint256"},{"internalType":"bool","name":"useExactETH","type":"bool"}],"name":"buyBrushQuest","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"}],"name":"deactivateQuest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"dependentQuestId","type":"uint16"},{"internalType":"uint16","name":"actionId1","type":"uint16"},{"internalType":"uint16","name":"actionNum1","type":"uint16"},{"internalType":"uint16","name":"actionId2","type":"uint16"},{"internalType":"uint16","name":"actionNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceId","type":"uint16"},{"internalType":"uint16","name":"actionChoiceNum","type":"uint16"},{"internalType":"enum Skill","name":"skillReward","type":"uint8"},{"internalType":"uint24","name":"skillXPGained","type":"uint24"},{"internalType":"uint16","name":"rewardItemTokenId1","type":"uint16"},{"internalType":"uint16","name":"rewardAmount1","type":"uint16"},{"internalType":"uint16","name":"rewardItemTokenId2","type":"uint16"},{"internalType":"uint16","name":"rewardAmount2","type":"uint16"},{"internalType":"uint16","name":"burnItemTokenId","type":"uint16"},{"internalType":"uint16","name":"burnAmount","type":"uint16"},{"internalType":"uint16","name":"questId","type":"uint16"},{"internalType":"bool","name":"isFullModeOnly","type":"bool"},{"internalType":"uint8","name":"worldLocation","type":"uint8"}],"internalType":"struct QuestInput[]","name":"quests","type":"tuple[]"},{"components":[{"internalType":"enum Skill","name":"skill","type":"uint8"},{"internalType":"uint64","name":"xp","type":"uint64"}],"internalType":"struct Quests.MinimumRequirement[3][]","name":"minimumRequirements","type":"tuple[3][]"}],"name":"editQuests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"}],"name":"getActiveQuestBurnedItemTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"}],"name":"getActiveQuestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"questId","type":"uint256"}],"name":"getQuestCompletedRewards","outputs":[{"internalType":"uint256[]","name":"itemTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"enum Skill","name":"skillGained","type":"uint8"},{"internalType":"uint32","name":"xpGained","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"randomnessBeacon","type":"address"},{"internalType":"address","name":"bridge","type":"address"},{"internalType":"contract ISolidlyRouter","name":"router","type":"address"},{"internalType":"address[2]","name":"path","type":"address[2]"},{"internalType":"contract IActivityPoints","name":"activityPoints","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"},{"internalType":"uint256","name":"questId","type":"uint256"}],"name":"isQuestCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"playerId","type":"uint256"},{"components":[{"internalType":"uint32","name":"questId","type":"uint32"},{"internalType":"uint16","name":"actionCompletedNum1","type":"uint16"},{"internalType":"uint16","name":"actionCompletedNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceCompletedNum","type":"uint16"},{"internalType":"uint16","name":"burnCompletedAmount","type":"uint16"}],"internalType":"struct PlayerQuest[]","name":"activeQuestInfo","type":"tuple[]"},{"internalType":"uint256[]","name":"questsCompleted","type":"uint256[]"}],"name":"processQuests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"playerId","type":"uint256"},{"internalType":"uint256[]","name":"questsCompleted","type":"uint256[]"},{"internalType":"uint256[]","name":"questIds","type":"uint256[]"},{"internalType":"uint256[]","name":"questActionCompletedNum1s","type":"uint256[]"},{"internalType":"uint256[]","name":"questActionCompletedNum2s","type":"uint256[]"},{"internalType":"uint256[]","name":"questActionChoiceCompletedNums","type":"uint256[]"},{"internalType":"uint256[]","name":"questBurnCompletedAmounts","type":"uint256[]"}],"name":"processQuestsBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"playerId","type":"uint256"},{"internalType":"uint256[]","name":"actionIds","type":"uint256[]"},{"internalType":"uint256[]","name":"actionAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"choiceIds","type":"uint256[]"},{"internalType":"uint256[]","name":"choiceAmounts","type":"uint256[]"},{"internalType":"uint256","name":"burnedAmountOwned","type":"uint256"}],"name":"processQuestsView","outputs":[{"internalType":"uint256[]","name":"itemTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"itemTokenIdsBurned","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsBurned","type":"uint256[]"},{"internalType":"enum Skill[]","name":"skillsGained","type":"uint8[]"},{"internalType":"uint32[]","name":"xpGained","type":"uint32[]"},{"internalType":"uint256[]","name":"questsCompleted","type":"uint256[]"},{"components":[{"internalType":"uint32","name":"questId","type":"uint32"},{"internalType":"uint16","name":"actionCompletedNum1","type":"uint16"},{"internalType":"uint16","name":"actionCompletedNum2","type":"uint16"},{"internalType":"uint16","name":"actionChoiceCompletedNum","type":"uint16"},{"internalType":"uint16","name":"burnCompletedAmount","type":"uint16"}],"internalType":"struct PlayerQuest[]","name":"activeQuestsCompletionInfo","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"questId","type":"uint256"}],"name":"removeQuest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"brushAmount","type":"uint256"},{"internalType":"uint256","name":"minFTM","type":"uint256"},{"internalType":"bool","name":"useExactETH","type":"bool"}],"name":"sellBrush","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"activityPoints","type":"address"}],"name":"setActivityPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPlayers","name":"players","type":"address"}],"name":"setPlayers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a080604052346100c257306080525f5160206159da5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161591390816100c78239608051818181612b0d01526130910152f35b6001600160401b0319166001600160401b039081175f5160206159da5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe610520604052600436101561001b575b3615610019575f80fd5b005b5f3560e01c806305cca536146140a857806314b7d7aa14613e6f5780631ca4d41c14613d695780632e4f16e01461374e5780632e8826c5146133695780632ea0f204146133255780634f1ef28614612fea578063521a1f6914612b8557806352d1902d14612ac8578063640d2769146125465780636a60a9431461240f578063715018a61461233557806375095dcd1461192a5780638a1f131f1461119f5780638da5cb5b1461112f578063950d7079146110c757806397c8a36c14610e4a5780639b0a139c14610d77578063aa0bd0af1461067d578063acc255e5146105f8578063acfda69e14610576578063ad3cb1cc146104c4578063d52636c114610476578063dd53672d146103f1578063e9d2821d146101885763f2fde38b0361000f57346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610019610177614113565b61017f614e7f565b614d92565b5f80fd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760043573ffffffffffffffffffffffffffffffffffffffff6001541633036103c957805f52600760205263ffffffff60405f20541680156103a1575f82815260076020908152604080832060088352818420815463ffffffff168552909252918290207f8977c98c8641a8cf30d9ff6004faf99864d075df0f4956eec5c9f837f882e0379492939190818103610264575b5050815f5260076020525f8381205582519182526020820152a1005b61ffff8263ffffffff8061039a955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556102de82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b805483547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16603091821c841690911b67ffff00000000000016178355805483547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1690881c831660401b69ffff0000000000000000161783555b5460501c167fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff6bffff0000000000000000000083549260501b169116179055565b8480610248565b7f98a3b975000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f95092833000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761045361046c61046163ffffffff610439600435614cc3565b92959160409591955197889760808952608089019061438c565b90878203602089015261438c565b9360408601906143bf565b1660608301520390f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576004355f526007602052602063ffffffff60405f205416604051908152f35b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760408051906105018183614295565b6005825260208201917f352e302e3000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff6105c2614113565b6105ca614e7f565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c555f80f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760043573ffffffffffffffffffffffffffffffffffffffff811680910361018457610650614e7f565b7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b34610184576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576106b5614113565b60443567ffffffffffffffff8111610184576106d5903690600401614328565b9060643567ffffffffffffffff8111610184576106f6903690600401614328565b92909360843567ffffffffffffffff811161018457610719903690600401614328565b94909260a43567ffffffffffffffff81116101845761073c903690600401614328565b959060c43567ffffffffffffffff81116101845761075e903690600401614328565b94909260e43567ffffffffffffffff811161018457610781903690600401614328565b97909573ffffffffffffffffffffffffffffffffffffffff600b54163303610d4f5773ffffffffffffffffffffffffffffffffffffffff90911691905f5b818110610a1857505050505f5b8181106107d557005b6107e081838d614cb3565b356107e961491d565b90806107fa575b50506001016107cc565b63ffffffff8116825261080e838d8c614cb3565b3561ffff169060208301918252610826848d88614cb3565b3561ffff166040840190815261083d858b8a614cb3565b3561ffff169060608501918252610855868d8c614cb3565b3561ffff1692608086019384526024355f52600860205260405f20905f5260205260405f2093855163ffffffff1663ffffffff1685547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000161785555161ffff166108f19085907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b5183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff000000000000161783555182547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff0000000000000000161782555181547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff0000000000000000000016179055604051906024358252602082016109ed9161ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b60c07e56eae4fd69ed1567b829cf64440f44617faf4302a399a5323390afb848871591a18b806107f0565b610a23818385614cb3565b3590610a2e826157e1565b92906028811015610d2257801580159190610d1757610a5160ff60015b16614987565b948215610d0c57610a626001614987565b92610b68575b5050907f5494770a8c8d0f6ddc25bfebd18a86c80c74ffab6f8f60184a599d78e14c2a25610ae1600195610aef610b1b956040519384938d8552602435602086015287604086015260e06060860152610ad3610ac660e08701614359565b8681036080880152614359565b9085820360a08701526143cc565b9083820360c085015261438c565b0390a16024355f52600660205260405f208160081c5f52602052600160ff60405f2092161b8154179055565b6024355f52600a60205260405f2063ffffffff610b3a8183541661504b565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055016107bf565b63ffffffff90610b8483610b7f8997969597614485565b6149d6565b1680610b8f83614485565b5273ffffffffffffffffffffffffffffffffffffffff60015416906040517f6bb0aa380000000000000000000000000000000000000000000000000000000081526024356004820152610be560248201876143bf565b602081604481865afa908115610cc9575f91610cd4575b5066ffffffffffffff91610c0f91614408565b1693813b156101845760a48a5f8094610c6498604051998a9687957f7d80e87e0000000000000000000000000000000000000000000000000000000087526004870152602435602487015260448601906143bf565b60648401528160848401525af1928315610cc957600195610aef7f5494770a8c8d0f6ddc25bfebd18a86c80c74ffab6f8f60184a599d78e14c2a2593610ae193610b1b97610cb9575b50949550509550610a68565b5f610cc391614295565b5f610cad565b6040513d5f823e3d90fd5b90506020813d8211610d04575b81610cee60209383614295565b81010312610184575166ffffffffffffff610bfc565b3d9150610ce1565b610a6260ff5f610a4b565b610a5160ff5f610a4b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f7fea9dc5000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610dae61491d565b506004355f52600760205260a060405f2061ffff60405191610dcf8361425c565b5463ffffffff81168352818160201c166020840152818160301c166040840152818160401c16606084015260501c166080820152610e48604051809261ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565bf35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610e81614c38565b506004355f52600560205261022060405f207fff00000000000000000000000000000000000000000000000000000000000000600160405192610ec384614278565b805461ffff8116855261ffff8160101c16602086015261ffff8160201c16604086015261ffff8160301c16606086015261ffff8160401c16608086015261ffff8160501c1660a086015261ffff8160601c1660c0860152610f2d60ff8260701c1660e087016149d6565b62ffffff8160781c1661010086015261ffff8160901c1661012086015261ffff8160a01c1661014086015261ffff8160b01c1661016086015261ffff8160c01c1661018086015261ffff8160d01c166101a086015261ffff8160e01c166101c086015260f01c6101e0850152015460f81b166102008201527fff000000000000000000000000000000000000000000000000000000000000006102006040519261ffff815116845261ffff602082015116602085015261ffff604082015116604085015261ffff606082015116606085015261ffff608082015116608085015261ffff60a08201511660a085015261ffff60c08201511660c085015261103b60e082015160e08601906143bf565b62ffffff6101008201511661010085015261ffff6101208201511661012085015261ffff6101408201511661014085015261ffff6101608201511661016085015261ffff6101808201511661018085015261ffff6101a0820151166101a085015261ffff6101c0820151166101c085015261ffff6101e0820151166101e0850152015116610200820152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576110f9614113565b6044359081151582036101845761112b916111179160243590614a21565b60405191829160208352602083019061438c565b0390f35b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346101845760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576111d6614113565b60243560443573ffffffffffffffffffffffffffffffffffffffff60015416908133036103c95780156119025761120c81614eeb565b156118da57825f52600660205261123d8160405f2060019160ff918160081c5f52602052161b60405f205416151590565b6118b257805f52600560205260405f2061ffff81541680611857575b5060019081015460071c8116141580156117de575b156117b6575f5b815f526009602052600381101561138157815f5260096020528060405f20015460ff8116906028821015610d2257816112b3575b5050600101611275565b6112ed604051927f6bb0aa3800000000000000000000000000000000000000000000000000000000845287600485015260248401906143bf565b602082604481885afa918215610cc9575f92611346575b5060081c67ffffffffffffffff161161131e5785806112a9565b7f0ae58342000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d8211611379575b8161136160209383614295565b8101031261018457519067ffffffffffffffff611304565b3d9150611354565b508284815f52600760205263ffffffff60405f20541683811461178e577fdbdd3b2619e6ed3aeae4bc12b4db353da1cd4fb13b1ccb1f5b6a6d32393e39719381611450926116ad575b50835f52600860205260405f20815f5260205263ffffffff60405f20541615155f1461155757835f52600860205260405f20815f5260205260405f20845f52600760205260405f20818103611455575b50505b6040519384938460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a1005b61ffff8263ffffffff80611550955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556114cf82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b805483547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16603091821c841690911b67ffff00000000000016178355805483547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff16604091821c841690911b69ffff000000000000000016178355610359565b858061141a565b6116a861156261491d565b63ffffffff83168152855f52600760205261ffff608060405f209263ffffffff80825116167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784556115f08360208301511685907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b604081015184547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1690841660301b67ffff00000000000016178455606081015184547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1690841660401b69ffff000000000000000016178455015182547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff16911660501b6bffff0000000000000000000016179055565b61141d565b7f8977c98c8641a8cf30d9ff6004faf99864d075df0f4956eec5c9f837f882e03760408051878152836020820152a1845f52600760205260405f2090855f52600860205260405f20905f5260205260405f2081810361170d575b506113ca565b61ffff8263ffffffff80611787955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556114cf82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b8580611707565b7f1cbc2fc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0d925c6a000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040517f8c6d99f4000000000000000000000000000000000000000000000000000000008152836004820152602081602481865afa908115610cc9575f91611828575b5061126e565b61184a915060203d602011611850575b6118428183614295565b8101906144b6565b85611822565b503d611838565b845f5260066020526118838160405f2060019160ff918160081c5f52602052161b60405f205416151590565b611259577f32aee3a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6d156969000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f627ed5b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0c35c39f000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760243567ffffffffffffffff811161018457611979903690600401614328565b6104e0526102a05260443567ffffffffffffffff8111610184576119a1903690600401614328565b906104c05260643567ffffffffffffffff8111610184576119c6903690600401614328565b90610360529060843567ffffffffffffffff8111610184576119ec903690600401614328565b6104205260c05260606103a08190526104408190526104608190526104808190526104a08190526103e08190526103c0819052610400526004355f908152600760205260409081902090516102c0819052611a469061425c565b5461ffff63ffffffff821691826102c05152818160201c1660206102c0510152818160301c1660406102c05101526103a0516102c05101608052818160401c166080515260501c1660806102c0510152611bed575b5050604051610100815280611b07611af6611ae5611ad4611ac361010086016103a05161438c565b85810360208701526104405161438c565b84810360408601526104605161438c565b83810360608501526104805161438c565b82810360808401526104a0516143cc565b81810360a083015260206103e0515191828152019060206103e05101905f5b818110611bce575050508082611b45920360c08401526103c05161438c565b81810360e08301526020610400515191828152019060206104005101905f5b818110611b72575050500390f35b91935091602060a082611bc0600194885161ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b019401910191849392611b64565b825163ffffffff16845285945060209384019390920191600101611b26565b6103a051604051610340819052611c049190614295565b600261034051527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103a051015f5b81811061231b57506103405161040052611c4b614947565b6103a052611c57614947565b610440526040516101c052611c7060606101c051614295565b60026101c05152803660206101c05101376101c051610460526040516101e052611c9e60606101e051614295565b60026101e05152803660206101e05101376101e0516104805260405161022052611ccc606061022051614295565b6002610220515280366020610220510137610220516104a0526040516102e052611cfa60606102e051614295565b60026102e05152803660206102e05101376102e0516103e05260405161032052611d28606061032051614295565b60026103205152366020610320510137610320516103c0525f6103808190526102008190526103008190526101608190526102408190526102608190526102808190526101a0819052610180819052610140819052606061012081905260a0526102c0515163ffffffff168152600560205260408120805460e05260a4359290915b6104e05181106121d75750505f5b83811061207e57505050506102805161206b575b61ffff60e05160201c168015801590612057575b8015612045575b611fe7575b5061014051611fc0575b61012051515f5b818110611f195750506101405115611ef05763ffffffff6102c0515116600161016052611e2c61032051614485565b525b61026051611ec3575b63ffffffff610180511680611e97575b50610380516103a05152610380516104405152610200516101c05152610200516101e05152610300516102205152610300516102e051526101605161032051526102405161034051528080611a9b565b611eaa6101a051610b7f61022051614485565b600161030052611ebc6102e051614485565b5280611e47565b61026051611ed36101c051614485565b5260016102005261028051611eea6101e051614485565b52611e37565b6001610240526102c051611f0661034051614485565b52611f1361034051614485565b50611e2e565b611f2681610120516144a2565b51611f37610380516103a0516144a2565b52611f448160a0516144a2565b51611f5561038051610440516144a2565b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103805114611f93576001908161038051016103805201611dfd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b611fd363ffffffff6102c0515116614cc3565b610180526101a05260a05261012052611df6565b61ffff60206102c051015116101580612029575b8061200b575b6101405280611dec565b5061ffff60806102c05101511661ffff60e05160e01c161115612001565b5061ffff608051511661ffff60e051610120511c161115611ffb565b5061ffff60e05160e01c161515611de7565b5061ffff60e051610120511c161515611de0565b61ffff60e05160d01c1661026052611dcc565b8061208f6001928661036051614cb3565b3561ffff60e05160501c16146120a6575b01611db8565b61ffff60805151168061ffff60e051610120511c16115f146121cd576120d861ffff918260e051610120511c166152a4565b166120e9826104205160c051614cb3565b359081808210911802186101005261ffff60e05160d01c16612127575b61ffff61211d816101005116826080515116614627565b16608051526120a0565b61215161214661010051861061010051871802610100511880966148e1565b946102c0518561577d565b610100526121656101005161028051614408565b610280526101005115806121af575b80612194575b156121065761ffff60806102c05101511660805152612106565b5061ffff60e051610120511c1661ffff60805151161061217a565b5061ffff60806102c05101511661ffff60e05160e01c161115612174565b5061ffff5f6120d8565b806121eb6001926104e0516102a051614cb3565b3561ffff60e05160101c1614612202575b01611daa565b61ffff60206102c0510151168061ffff60e05160201c16115f1461230c5761226f61ffff8061223981948260e05160201c166152a4565b1661224885886104c051614cb3565b359081808210911802188160e05160d01c1661227d575b168260206102c051015116614627565b1660206102c05101526121fc565b6122938161229e928b10818c180218809a6148e1565b986102c0518961577d565b6122ab8161028051614408565b610280528015806122f2575b806122d9575b1561225f578160806102c05101511660206102c051015261225f565b508160e05160201c168260206102c051015116106122bd565b508160806102c0510151168260e05160e01c1611156122b7565b5061ffff61226f81805f612239565b60209061232661491d565b82826103405101015201611c33565b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761236b614e7f565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457612441614113565b612449614136565b604435906084359081151582036101845773ffffffffffffffffffffffffffffffffffffffff6001541633036103c957825f52600760205263ffffffff60405f205416926005840361251e576124ac936124a39186615062565b60643590614a21565b6124b581614485565b516124c6575b602060405160018152f35b5f8080936124de6124d78395614485565b51346148e1565b905af16124e96148ee565b50156124f65780806124bb565b7ff0c49d44000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff18275b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845761255436614159565b61255f939193614e7f565b5f5b83811061259b5750611450907f3c59e8aa826a7b8b1d103b860ef42496456bf7a5e99e775f267f830df60ef78c946040519485948561464c565b6125a6818585614606565b906125b2818488614617565b916125bc816152ca565b6101e081019261ffff6125ce8561489f565b165f52600960205260405f20905f905b60038210612a55575050506125fe61ffff6125f88561489f565b16614eeb565b156118da5761ffff61260f8461489f565b165f90815260056020526040902060019081015460071c8116146126366102008301615297565b151590151503612a2d5761265561264f61ffff92615523565b9361489f565b165f52600560205260405f209161ffff8151168354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000063ffff0000602085015160101b169216171783556126e461ffff60408301511684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b606081015183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178355608081015183547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff00000000000000001617835560a081015183547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff000000000000000000001617835560c08101519280549060e0830151906028821015610d22576001956102009387936eff00000000000000000000000000007fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff71ffffff0000000000000000000000000000006101008a015160781b16937fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff6dffff00000000000000000000000073ffff0000000000000000000000000000000000006101208d015160901b169760601b16911617169160701b1617171781556128c561ffff6101408601511682907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b6101608401518482547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79ffff00000000000000000000000000000000000000000000000061018084015160c01b167fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffff00000000000000000000000000000000000000000000000000006101a086015160d01b16937fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff77ffff000000000000000000000000000000000000000000007fffff0000000000000000000000000000000000000000000000000000000000006101e07dffff000000000000000000000000000000000000000000000000000000006101c08b015160e01b1699015160f01b169860b01b1691161716171617171781550191015160f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501612561565b7f167fcd83000000000000000000000000000000000000000000000000000000005f5260045ffd5b80359060288210156101845783549060208101359067ffffffffffffffff821682036101845760019384937fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000060ff68ffffffffffffffff0060409660081b169316911617178655019301910190916125de565b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003612b5d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457612bbc614113565b612bc4614136565b906044359073ffffffffffffffffffffffffffffffffffffffff8216809203610184573660a4116101845760a4359073ffffffffffffffffffffffffffffffffffffffff8216809203610184577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549360ff8560401c16159467ffffffffffffffff811680159081612fe2575b6001149081612fd8575b159081612fcf575b50612fa75773ffffffffffffffffffffffffffffffffffffffff92818760017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000879516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055612f52575b50612cd7615726565b612cdf615726565b612ce833614d92565b612cf0615726565b167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55817fffffffffffffffffffffffff0000000000000000000000000000000000000000600254161760025560643573ffffffffffffffffffffffffffffffffffffffff81169081810361018457507fffffffffffffffffffffffff0000000000000000000000000000000000000000600354161760035560843573ffffffffffffffffffffffffffffffffffffffff811690818103610184575f9360209360449250837fffffffffffffffffffffffff000000000000000000000000000000000000000060045416176004557fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c5560405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015610cc957612f33575b50612ea057005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b612f4b9060203d602011611850576118428183614295565b5081612e99565b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005587612cce565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501587612c63565b303b159150612c5b565b879150612c51565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761301c614113565b6024359067ffffffffffffffff8211610184573660238301121561018457816004013590613049826142ee565b916130576040519384614295565b8083526020830193366024838301011161018457815f9260246020930187378401015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156132e3575b50612b5d576130c9614e7f565b73ffffffffffffffffffffffffffffffffffffffff8116926040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481885afa5f91816132af575b5061314957847f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8692036132845750823b1561325957807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115613227575f8091610019945190845af46132216148ee565b91615844565b5050503461323157005b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7faa1d49a4000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9091506020813d6020116132db575b816132cb60209383614295565b8101031261018457519086613118565b3d91506132be565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415846130bc565b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760206133616004356148ae565b604051908152f35b346101845760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576133a0614113565b6024359060443567ffffffffffffffff811161018457366023820112156101845780600401359067ffffffffffffffff82116101845736602460a0840283010111610184576064359167ffffffffffffffff8311610184573660238401121561018457826004013592613412846142d6565b936134206040519586614295565b8085526024602086019160051b8301019136831161018457602401905b82821061373e5750505073ffffffffffffffffffffffffffffffffffffffff6001541633036103c95782511561349b5750508051915f5b83811061347d57005b8061349561348d600193866144a2565b518785615062565b01613474565b9150929150159081156134aa57005b805f52600760205260405f20916137115760448301916134c98361489f565b90549061ffff808360201c16911614908115916136f0575b81156136cf575b501561001957805f52600760205260405f209260248101359063ffffffff8216809203610184578461ffff6136bb82826136b06136c696826136a560c09c8b7e56eae4fd69ed1567b829cf64440f44617faf4302a399a5323390afb84887159f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000859e54161788556135b461357d8361489f565b89547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1660209190911b65ffff0000000016178955565b61369560a460648701966136036135ca8961489f565b8c547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178c55565b61364e608482019b6136148d61489f565b7fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff69ffff000000000000000083549260401b169116179055565b019b6136598d61489f565b7fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff6bffff0000000000000000000083549260501b169116179055565b6040519d8e5260208e015261463d565b1660408b015261463d565b16606088015261463d565b16608085015261463d565b1660a0820152a1005b905061ffff806136e160a4870161489f565b9260501c1691161415846134e8565b90506136fe6084850161489f565b61ffff808360401c1691161415906134e1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b813581526020918201910161343d565b346101845761375c36614159565b613767939193614e7f565b808303613d3a575f5b8381106138045750611450907f79584a4b4b305af3676cf5e9e495bb3ac0d9a121e987efeabfea62d5184ced75946001547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff00000000000000000000000000000000000000006137ee61ffff891661ffff8560a01c16614627565b60a01b169116176001556040519485948561464c565b919290613812838386614606565b9461381e848383614617565b92613828876152ca565b5f955f5b6003811015613d2d578060061b8601356028811015610184576138515760010161382c565b50949196929390955060015b613c8b575b506101e082019161387861ffff6125f88561489f565b613c635761388b61264f61ffff92615523565b165f52600560205260405f209161ffff8151168354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000063ffff0000602085015160101b1692161717835561391a61ffff60408301511684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b606081015183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178355608081015183547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff00000000000000001617835560a081015183547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff000000000000000000001617835560c08101519280549060e0830151906028821015610d22576001956102009387936eff00000000000000000000000000007fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff71ffffff0000000000000000000000000000006101008a015160781b16937fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff6dffff00000000000000000000000073ffff0000000000000000000000000000000000006101208d015160901b169760601b16911617169160701b161717178155613afb61ffff6101408601511682907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b6101608401518482547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79ffff00000000000000000000000000000000000000000000000061018084015160c01b167fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffff00000000000000000000000000000000000000000000000000006101a086015160d01b16937fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff77ffff000000000000000000000000000000000000000000007fffff0000000000000000000000000000000000000000000000000000000000006101e07dffff000000000000000000000000000000000000000000000000000000006101c08b015160e01b1699015160f01b169860b01b1691161716171617171781550191015160f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501613770565b7f99174d6d000000000000000000000000000000000000000000000000000000005f5260045ffd5b61ffff613c9b6101e0850161489f565b165f52600960205260405f20905f905b60038210613cba575050613862565b80359060288210156101845783549060208101359067ffffffffffffffff821682036101845760019384937fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000060ff68ffffffffffffffff0060409660081b16931691161717865501930191019091613cab565b509491969293909561385d565b827fab8b67c6000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457600435613da3614e7f565b801561190257613db281614eeb565b156118da576020817fac84845cc731eb4f0b8ac525e95bc2f43caa97b3ee3d73af44b37015973ea9ba925f52600582525f6001604082208281550155604051908152a160015461ffff8160a01c168015611f935775ffff00000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff920160a01b169116176001555f80f35b346101845760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457613ea6614113565b604435606435602435811515820361018457801561408057610258420190814211611f93575f93613ed5614415565b93602073ffffffffffffffffffffffffffffffffffffffff6004541673ffffffffffffffffffffffffffffffffffffffff6003541660405190613f1782614213565b82825283820152886040820152613f2d88614485565b52613f3787614485565b506064604051809981937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528860448401525af1958615610cc9575f96614063575b50851461400d578490613fe273ffffffffffffffffffffffffffffffffffffffff6002541694604051988997889687957fd69f344c000000000000000000000000000000000000000000000000000000008752600487016145c1565b03925af18015610cc957613ff257005b610019903d805f833e6140058183614295565b8101906144ce565b908490613fe273ffffffffffffffffffffffffffffffffffffffff6002541694604051988997889687957f18a13086000000000000000000000000000000000000000000000000000000008752600487016145c1565b61407b9060203d602011611850576118428183614295565b613f86565b7f14f7bb7f000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576004355f526006602052602061410960243560405f2060019160ff918160081c5f52602052161b60405f205416151590565b6040519015158152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361018457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361018457565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610184576004359167ffffffffffffffff831161018457806023840112156101845782600401359267ffffffffffffffff84116101845781602461024086028301011161018457602401929160243567ffffffffffffffff811161018457826023820112156101845780600401359267ffffffffffffffff841161018457602460c0850283010111610184576024019190565b6060810190811067ffffffffffffffff82111761422f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761422f57604052565b610220810190811067ffffffffffffffff82111761422f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761422f57604052565b67ffffffffffffffff811161422f5760051b60200190565b67ffffffffffffffff811161422f57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9181601f840112156101845782359167ffffffffffffffff8311610184576020808501948460051b01011161018457565b60206060519182815201906080905f5b8181106143765750505090565b8251845260209384019390920191600101614369565b90602080835192838152019201905f5b8181106143a95750505090565b825184526020938401939092019160010161439c565b906028821015610d225752565b90602080835192838152019201905f5b8181106143e95750505090565b909192602080826143fd60019488516143bf565b0194019291016143dc565b91908201809211611f9357565b604080519091906144268382614295565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b82811061445c57505050565b60209060405161446b81614213565b5f81525f838201525f604082015282828501015201614450565b8051156137115760200190565b8051600110156137115760400190565b80518210156137115760209160051b010190565b90816020910312610184575180151581036101845790565b6020818303126101845780519067ffffffffffffffff821161018457019080601f83011215610184578151614502816142d6565b926145106040519485614295565b81845260208085019260051b82010192831161018457602001905b8282106145385750505090565b815181526020918201910161452b565b90602080835192838152019201905f5b8181106145655750505090565b909192602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835273ffffffffffffffffffffffffffffffffffffffff8582015116858401520151151560408201520194019101919091614558565b916080936145fb9173ffffffffffffffffffffffffffffffffffffffff93989796988552602085015260a0604085015260a0840190614548565b951660608201520152565b919081101561371157610240020190565b91908110156137115760c0020190565b9061ffff8091169116019061ffff8211611f9357565b359061ffff8216820361018457565b939293826040820160408352526060810191925f905b8082106146f55750508082036020918201528382520192915f91505b80821061468b5750505090565b9091928084905f905b600382106146b05750505060c08060019201940192019061467e565b8235602881101561018457816146c5916143bf565b60208301359067ffffffffffffffff82168092036101845760408160019360208394015201930191019091614694565b90919261ffff6147048661463d565b16815261ffff6147166020870161463d565b16602082015261ffff61472b6040870161463d565b16604082015261ffff6147406060870161463d565b16606082015261ffff6147556080870161463d565b16608082015261ffff61476a60a0870161463d565b1660a082015261ffff61477f60c0870161463d565b1660c082015260e08501356028811015610184576147a19060e08301906143bf565b61010085013562ffffff81168091036101845761010082015261ffff6147ca610120870161463d565b1661012082015261ffff6147e1610140870161463d565b1661014082015261ffff6147f8610160870161463d565b1661016082015261ffff61480f610180870161463d565b1661018082015261ffff6148266101a0870161463d565b166101a082015261ffff61483d6101c0870161463d565b166101c082015261ffff6148546101e0870161463d565b166101e0820152610200850135801515809103610184576102008201526102208501359060ff8216809203610184576102208101919091526102409485019401929160010190614662565b3561ffff811681036101845790565b5f52600760205263ffffffff60405f20541680156148dc575f52600560205261ffff60405f205460d01c1690565b505f90565b91908203918211611f9357565b3d15614918573d906148ff826142ee565b9161490d6040519384614295565b82523d5f602084013e565b606090565b6040519061492a8261425c565b5f6080838281528260208201528260408201528260608201520152565b60405160a091906149588382614295565b60048152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001366020840137565b90614991826142d6565b61499e6040519182614295565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06149cc82946142d6565b0190602036910137565b6028821015610d225752565b90614a1660609373ffffffffffffffffffffffffffffffffffffffff92979695978452608060208501526080840190614548565b951660408201520152565b9291923415614c1057610258420191824211611f9357614a3f614415565b9473ffffffffffffffffffffffffffffffffffffffff6003541673ffffffffffffffffffffffffffffffffffffffff6004541660405191614a7f83614213565b825260208201525f6040820152614a9587614485565b52614a9f86614485565b5015614b2a575f92939473ffffffffffffffffffffffffffffffffffffffff6002541691614afc604051968795869485947f67ffb66a000000000000000000000000000000000000000000000000000000008652600486016149e2565b039134905af1908115610cc9575f91614b13575090565b614b2791503d805f833e6140058183614295565b90565b5f929473ffffffffffffffffffffffffffffffffffffffff6002541691614b80604051978895869485947f633afc92000000000000000000000000000000000000000000000000000000008652600486016149e2565b039134905af1918215610cc9575f92614bf4575b5081614b9f81614485565b51151580614bd2575b614baf5750565b5f8080614bbf6124d78295614485565b335af1614bca6148ee565b50156124f657565b5073ffffffffffffffffffffffffffffffffffffffff60015416331415614ba8565b614c099192503d805f833e6140058183614295565b905f614b94565b7f9a51c327000000000000000000000000000000000000000000000000000000005f5260045ffd5b60405190614c4582614278565b5f610200838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201520152565b91908110156137115760051b0190565b5f52600560205260405f20549061ffff8260901c1691821591825f14614d8b575f5b61ffff8360b01c1690614d08821591825f14614d815760ff805f5b169116614408565b95614d1b614d1588614987565b97614987565b9515614d5f575b5015614d3d575b5062ffffff60ff8360701c169260781c1690565b614d4685614492565b5261ffff8260c01c16614d5884614492565b525f614d29565b614d6887614485565b5261ffff8460a01c16614d7a86614485565b525f614d22565b60ff806001614d00565b6001614ce5565b73ffffffffffffffffffffffffffffffffffffffff168015614e535773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303614ebf57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b5f52600560205260405f2060405190614f0382614278565b80549061ffff8216835261ffff60208401818460101c168152818460201c166040860152818460301c166060860152818460401c16608086015260a0850194828560501c168652828560601c1660c08201526102007fff00000000000000000000000000000000000000000000000000000000000000600160e0840196614f9060ff8a60701c16896149d6565b62ffffff8960781c16610100860152610120850198878160901c168a52878160a01c16610140870152878160b01c16610160870152878160c01c16610180870152878160d01c166101a0870152878160e01c166101c087015260f01c6101e0860152015460f81b169101525116159283159361503c575b508215615026575b50811561501a575090565b61ffff91505116151590565b909150516028811015610d22571515905f61500f565b5161ffff16151592505f615007565b63ffffffff1663ffffffff8114611f935760010190565b91602491927fe0b5124b12e878158288d1002ed1fb960faff0ec1c7b3168f86d9d1afd1b0d8b604051806150bf8588868460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a173ffffffffffffffffffffffffffffffffffffffff600c5416602073ffffffffffffffffffffffffffffffffffffffff60015416604051958680927f8c6d99f40000000000000000000000000000000000000000000000000000000082528960048301525afa938415610cc9575f94615258575b5060846020925f73ffffffffffffffffffffffffffffffffffffffff9360405197889586947fec01f01900000000000000000000000000000000000000000000000000000000865260048087015216602485015215156044840152600160648401525af18015610cc957615225575b6151d19150825f52600660205260405f208160081c5f52602052600160ff60405f2092161b8154179055565b805f5260076020525f60408120555f52600a60205260405f2063ffffffff6151fb8183541661504b565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b6020823d602011615250575b8161523e60209383614295565b81010312610184576151d191506151a5565b3d9150615231565b73ffffffffffffffffffffffffffffffffffffffff9194506020925f61528c608493863d8811611850576118428183614295565b969350509250615136565b3580151581036101845790565b9061ffff8091169116039061ffff8211611f9357565b3562ffffff811681036101845790565b61ffff6152da610120830161489f565b1615801561550a575b156154c95761ffff6152f8610160830161489f565b161580156154f1575b156154c95761ffff6153156020830161489f565b161580156154b1575b156154715761ffff6153326060830161489f565b16158015615499575b156154715761ffff61534f60a0830161489f565b16158015615459575b156154315760e0810135602881101561018457158015615417575b156153ef5761ffff6153886101a0830161489f565b161580156153d6575b156153ae576153a66101e061ffff920161489f565b161561190257565b7f2075cc10000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff6153e76101c0830161489f565b161515615391565b7f4f24533e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5062ffffff61542961010083016152ba565b161515615373565b7fe34d2ce8000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff61546960c0830161489f565b161515615358565b7fe42d32dd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff6154a96080830161489f565b16151561533b565b5061ffff6154c16040830161489f565b16151561531e565b7f38539865000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff615502610180830161489f565b161515615301565b5061ffff61551b610140830161489f565b1615156152e3565b61552b614c38565b506155396102008201615297565b1561571f576080905b61554b8161489f565b906155586020820161489f565b906155656040820161489f565b906155726060820161489f565b9061557f6080820161489f565b9061558c60a0820161489f565b9061559960c0820161489f565b90602860e08201351015610184576155b461010082016152ba565b916155c2610120830161489f565b936155d0610140840161489f565b956155de610160850161489f565b976155ec610180860161489f565b996155fa6101a0870161489f565b9b6156086101c0880161489f565b9d604051610500526105005161561d90614278565b61ffff16610500515261ffff16610500516020015261ffff16610500516040015261ffff16610500516060015261ffff16610500516080015261ffff166105005160a0015261ffff166105005160c0015260e001356105005160e00190615683916149d6565b62ffffff1661050051610100015261ffff1661050051610120015261ffff1661050051610140015261ffff1661050051610160015261ffff1661050051610180015261ffff16610500516101a0015261ffff16610500516101c00152610500516101e0015f905260f81b7fff00000000000000000000000000000000000000000000000000000000000000166105005161020001526105005190565b5f90615542565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561575557565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b61ffff6080919493945460e01c1691019061ffff825116908181115f146157d65761ffff916157ab916152a4565b168380821091180280841893036157bf5750565b61ffff6157d181851682845116614627565b169052565b505061ffff5f6157ab565b5f915f91601981101580615839575b8015615822575b6157fe5750565b5f90815260056020526040902054607081901c60ff16935060781c62ffffff169150565b50602f81101580156157f7575060338111156157f7565b5060278111156157f0565b90615881575080511561585957805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806158d4575b615892575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561588a56fea2646970667358221220f77916eb066f258c315702750a721071eb3f9ad9d94bfb6e87fc11fe8abee25964736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
Deployed Bytecode
0x610520604052600436101561001b575b3615610019575f80fd5b005b5f3560e01c806305cca536146140a857806314b7d7aa14613e6f5780631ca4d41c14613d695780632e4f16e01461374e5780632e8826c5146133695780632ea0f204146133255780634f1ef28614612fea578063521a1f6914612b8557806352d1902d14612ac8578063640d2769146125465780636a60a9431461240f578063715018a61461233557806375095dcd1461192a5780638a1f131f1461119f5780638da5cb5b1461112f578063950d7079146110c757806397c8a36c14610e4a5780639b0a139c14610d77578063aa0bd0af1461067d578063acc255e5146105f8578063acfda69e14610576578063ad3cb1cc146104c4578063d52636c114610476578063dd53672d146103f1578063e9d2821d146101885763f2fde38b0361000f57346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610019610177614113565b61017f614e7f565b614d92565b5f80fd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760043573ffffffffffffffffffffffffffffffffffffffff6001541633036103c957805f52600760205263ffffffff60405f20541680156103a1575f82815260076020908152604080832060088352818420815463ffffffff168552909252918290207f8977c98c8641a8cf30d9ff6004faf99864d075df0f4956eec5c9f837f882e0379492939190818103610264575b5050815f5260076020525f8381205582519182526020820152a1005b61ffff8263ffffffff8061039a955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556102de82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b805483547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16603091821c841690911b67ffff00000000000016178355805483547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1690881c831660401b69ffff0000000000000000161783555b5460501c167fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff6bffff0000000000000000000083549260501b169116179055565b8480610248565b7f98a3b975000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f95092833000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761045361046c61046163ffffffff610439600435614cc3565b92959160409591955197889760808952608089019061438c565b90878203602089015261438c565b9360408601906143bf565b1660608301520390f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576004355f526007602052602063ffffffff60405f205416604051908152f35b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760408051906105018183614295565b6005825260208201917f352e302e3000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff6105c2614113565b6105ca614e7f565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c555f80f35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760043573ffffffffffffffffffffffffffffffffffffffff811680910361018457610650614e7f565b7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b34610184576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576106b5614113565b60443567ffffffffffffffff8111610184576106d5903690600401614328565b9060643567ffffffffffffffff8111610184576106f6903690600401614328565b92909360843567ffffffffffffffff811161018457610719903690600401614328565b94909260a43567ffffffffffffffff81116101845761073c903690600401614328565b959060c43567ffffffffffffffff81116101845761075e903690600401614328565b94909260e43567ffffffffffffffff811161018457610781903690600401614328565b97909573ffffffffffffffffffffffffffffffffffffffff600b54163303610d4f5773ffffffffffffffffffffffffffffffffffffffff90911691905f5b818110610a1857505050505f5b8181106107d557005b6107e081838d614cb3565b356107e961491d565b90806107fa575b50506001016107cc565b63ffffffff8116825261080e838d8c614cb3565b3561ffff169060208301918252610826848d88614cb3565b3561ffff166040840190815261083d858b8a614cb3565b3561ffff169060608501918252610855868d8c614cb3565b3561ffff1692608086019384526024355f52600860205260405f20905f5260205260405f2093855163ffffffff1663ffffffff1685547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000161785555161ffff166108f19085907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b5183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff000000000000161783555182547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff0000000000000000161782555181547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff0000000000000000000016179055604051906024358252602082016109ed9161ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b60c07e56eae4fd69ed1567b829cf64440f44617faf4302a399a5323390afb848871591a18b806107f0565b610a23818385614cb3565b3590610a2e826157e1565b92906028811015610d2257801580159190610d1757610a5160ff60015b16614987565b948215610d0c57610a626001614987565b92610b68575b5050907f5494770a8c8d0f6ddc25bfebd18a86c80c74ffab6f8f60184a599d78e14c2a25610ae1600195610aef610b1b956040519384938d8552602435602086015287604086015260e06060860152610ad3610ac660e08701614359565b8681036080880152614359565b9085820360a08701526143cc565b9083820360c085015261438c565b0390a16024355f52600660205260405f208160081c5f52602052600160ff60405f2092161b8154179055565b6024355f52600a60205260405f2063ffffffff610b3a8183541661504b565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055016107bf565b63ffffffff90610b8483610b7f8997969597614485565b6149d6565b1680610b8f83614485565b5273ffffffffffffffffffffffffffffffffffffffff60015416906040517f6bb0aa380000000000000000000000000000000000000000000000000000000081526024356004820152610be560248201876143bf565b602081604481865afa908115610cc9575f91610cd4575b5066ffffffffffffff91610c0f91614408565b1693813b156101845760a48a5f8094610c6498604051998a9687957f7d80e87e0000000000000000000000000000000000000000000000000000000087526004870152602435602487015260448601906143bf565b60648401528160848401525af1928315610cc957600195610aef7f5494770a8c8d0f6ddc25bfebd18a86c80c74ffab6f8f60184a599d78e14c2a2593610ae193610b1b97610cb9575b50949550509550610a68565b5f610cc391614295565b5f610cad565b6040513d5f823e3d90fd5b90506020813d8211610d04575b81610cee60209383614295565b81010312610184575166ffffffffffffff610bfc565b3d9150610ce1565b610a6260ff5f610a4b565b610a5160ff5f610a4b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f7fea9dc5000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610dae61491d565b506004355f52600760205260a060405f2061ffff60405191610dcf8361425c565b5463ffffffff81168352818160201c166020840152818160301c166040840152818160401c16606084015260501c166080820152610e48604051809261ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565bf35b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457610e81614c38565b506004355f52600560205261022060405f207fff00000000000000000000000000000000000000000000000000000000000000600160405192610ec384614278565b805461ffff8116855261ffff8160101c16602086015261ffff8160201c16604086015261ffff8160301c16606086015261ffff8160401c16608086015261ffff8160501c1660a086015261ffff8160601c1660c0860152610f2d60ff8260701c1660e087016149d6565b62ffffff8160781c1661010086015261ffff8160901c1661012086015261ffff8160a01c1661014086015261ffff8160b01c1661016086015261ffff8160c01c1661018086015261ffff8160d01c166101a086015261ffff8160e01c166101c086015260f01c6101e0850152015460f81b166102008201527fff000000000000000000000000000000000000000000000000000000000000006102006040519261ffff815116845261ffff602082015116602085015261ffff604082015116604085015261ffff606082015116606085015261ffff608082015116608085015261ffff60a08201511660a085015261ffff60c08201511660c085015261103b60e082015160e08601906143bf565b62ffffff6101008201511661010085015261ffff6101208201511661012085015261ffff6101408201511661014085015261ffff6101608201511661016085015261ffff6101808201511661018085015261ffff6101a0820151166101a085015261ffff6101c0820151166101c085015261ffff6101e0820151166101e0850152015116610200820152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576110f9614113565b6044359081151582036101845761112b916111179160243590614a21565b60405191829160208352602083019061438c565b0390f35b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346101845760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576111d6614113565b60243560443573ffffffffffffffffffffffffffffffffffffffff60015416908133036103c95780156119025761120c81614eeb565b156118da57825f52600660205261123d8160405f2060019160ff918160081c5f52602052161b60405f205416151590565b6118b257805f52600560205260405f2061ffff81541680611857575b5060019081015460071c8116141580156117de575b156117b6575f5b815f526009602052600381101561138157815f5260096020528060405f20015460ff8116906028821015610d2257816112b3575b5050600101611275565b6112ed604051927f6bb0aa3800000000000000000000000000000000000000000000000000000000845287600485015260248401906143bf565b602082604481885afa918215610cc9575f92611346575b5060081c67ffffffffffffffff161161131e5785806112a9565b7f0ae58342000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d8211611379575b8161136160209383614295565b8101031261018457519067ffffffffffffffff611304565b3d9150611354565b508284815f52600760205263ffffffff60405f20541683811461178e577fdbdd3b2619e6ed3aeae4bc12b4db353da1cd4fb13b1ccb1f5b6a6d32393e39719381611450926116ad575b50835f52600860205260405f20815f5260205263ffffffff60405f20541615155f1461155757835f52600860205260405f20815f5260205260405f20845f52600760205260405f20818103611455575b50505b6040519384938460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a1005b61ffff8263ffffffff80611550955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556114cf82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b805483547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16603091821c841690911b67ffff00000000000016178355805483547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff16604091821c841690911b69ffff000000000000000016178355610359565b858061141a565b6116a861156261491d565b63ffffffff83168152855f52600760205261ffff608060405f209263ffffffff80825116167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784556115f08360208301511685907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b604081015184547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1690841660301b67ffff00000000000016178455606081015184547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1690841660401b69ffff000000000000000016178455015182547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff16911660501b6bffff0000000000000000000016179055565b61141d565b7f8977c98c8641a8cf30d9ff6004faf99864d075df0f4956eec5c9f837f882e03760408051878152836020820152a1845f52600760205260405f2090855f52600860205260405f20905f5260205260405f2081810361170d575b506113ca565b61ffff8263ffffffff80611787955416167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008454161783556114cf82825460201c1684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b8580611707565b7f1cbc2fc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0d925c6a000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040517f8c6d99f4000000000000000000000000000000000000000000000000000000008152836004820152602081602481865afa908115610cc9575f91611828575b5061126e565b61184a915060203d602011611850575b6118428183614295565b8101906144b6565b85611822565b503d611838565b845f5260066020526118838160405f2060019160ff918160081c5f52602052161b60405f205416151590565b611259577f32aee3a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6d156969000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f627ed5b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0c35c39f000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760243567ffffffffffffffff811161018457611979903690600401614328565b6104e0526102a05260443567ffffffffffffffff8111610184576119a1903690600401614328565b906104c05260643567ffffffffffffffff8111610184576119c6903690600401614328565b90610360529060843567ffffffffffffffff8111610184576119ec903690600401614328565b6104205260c05260606103a08190526104408190526104608190526104808190526104a08190526103e08190526103c0819052610400526004355f908152600760205260409081902090516102c0819052611a469061425c565b5461ffff63ffffffff821691826102c05152818160201c1660206102c0510152818160301c1660406102c05101526103a0516102c05101608052818160401c166080515260501c1660806102c0510152611bed575b5050604051610100815280611b07611af6611ae5611ad4611ac361010086016103a05161438c565b85810360208701526104405161438c565b84810360408601526104605161438c565b83810360608501526104805161438c565b82810360808401526104a0516143cc565b81810360a083015260206103e0515191828152019060206103e05101905f5b818110611bce575050508082611b45920360c08401526103c05161438c565b81810360e08301526020610400515191828152019060206104005101905f5b818110611b72575050500390f35b91935091602060a082611bc0600194885161ffff6080809263ffffffff8151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b019401910191849392611b64565b825163ffffffff16845285945060209384019390920191600101611b26565b6103a051604051610340819052611c049190614295565b600261034051527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103a051015f5b81811061231b57506103405161040052611c4b614947565b6103a052611c57614947565b610440526040516101c052611c7060606101c051614295565b60026101c05152803660206101c05101376101c051610460526040516101e052611c9e60606101e051614295565b60026101e05152803660206101e05101376101e0516104805260405161022052611ccc606061022051614295565b6002610220515280366020610220510137610220516104a0526040516102e052611cfa60606102e051614295565b60026102e05152803660206102e05101376102e0516103e05260405161032052611d28606061032051614295565b60026103205152366020610320510137610320516103c0525f6103808190526102008190526103008190526101608190526102408190526102608190526102808190526101a0819052610180819052610140819052606061012081905260a0526102c0515163ffffffff168152600560205260408120805460e05260a4359290915b6104e05181106121d75750505f5b83811061207e57505050506102805161206b575b61ffff60e05160201c168015801590612057575b8015612045575b611fe7575b5061014051611fc0575b61012051515f5b818110611f195750506101405115611ef05763ffffffff6102c0515116600161016052611e2c61032051614485565b525b61026051611ec3575b63ffffffff610180511680611e97575b50610380516103a05152610380516104405152610200516101c05152610200516101e05152610300516102205152610300516102e051526101605161032051526102405161034051528080611a9b565b611eaa6101a051610b7f61022051614485565b600161030052611ebc6102e051614485565b5280611e47565b61026051611ed36101c051614485565b5260016102005261028051611eea6101e051614485565b52611e37565b6001610240526102c051611f0661034051614485565b52611f1361034051614485565b50611e2e565b611f2681610120516144a2565b51611f37610380516103a0516144a2565b52611f448160a0516144a2565b51611f5561038051610440516144a2565b527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103805114611f93576001908161038051016103805201611dfd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b611fd363ffffffff6102c0515116614cc3565b610180526101a05260a05261012052611df6565b61ffff60206102c051015116101580612029575b8061200b575b6101405280611dec565b5061ffff60806102c05101511661ffff60e05160e01c161115612001565b5061ffff608051511661ffff60e051610120511c161115611ffb565b5061ffff60e05160e01c161515611de7565b5061ffff60e051610120511c161515611de0565b61ffff60e05160d01c1661026052611dcc565b8061208f6001928661036051614cb3565b3561ffff60e05160501c16146120a6575b01611db8565b61ffff60805151168061ffff60e051610120511c16115f146121cd576120d861ffff918260e051610120511c166152a4565b166120e9826104205160c051614cb3565b359081808210911802186101005261ffff60e05160d01c16612127575b61ffff61211d816101005116826080515116614627565b16608051526120a0565b61215161214661010051861061010051871802610100511880966148e1565b946102c0518561577d565b610100526121656101005161028051614408565b610280526101005115806121af575b80612194575b156121065761ffff60806102c05101511660805152612106565b5061ffff60e051610120511c1661ffff60805151161061217a565b5061ffff60806102c05101511661ffff60e05160e01c161115612174565b5061ffff5f6120d8565b806121eb6001926104e0516102a051614cb3565b3561ffff60e05160101c1614612202575b01611daa565b61ffff60206102c0510151168061ffff60e05160201c16115f1461230c5761226f61ffff8061223981948260e05160201c166152a4565b1661224885886104c051614cb3565b359081808210911802188160e05160d01c1661227d575b168260206102c051015116614627565b1660206102c05101526121fc565b6122938161229e928b10818c180218809a6148e1565b986102c0518961577d565b6122ab8161028051614408565b610280528015806122f2575b806122d9575b1561225f578160806102c05101511660206102c051015261225f565b508160e05160201c168260206102c051015116106122bd565b508160806102c0510151168260e05160e01c1611156122b7565b5061ffff61226f81805f612239565b60209061232661491d565b82826103405101015201611c33565b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761236b614e7f565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457612441614113565b612449614136565b604435906084359081151582036101845773ffffffffffffffffffffffffffffffffffffffff6001541633036103c957825f52600760205263ffffffff60405f205416926005840361251e576124ac936124a39186615062565b60643590614a21565b6124b581614485565b516124c6575b602060405160018152f35b5f8080936124de6124d78395614485565b51346148e1565b905af16124e96148ee565b50156124f65780806124bb565b7ff0c49d44000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff18275b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845761255436614159565b61255f939193614e7f565b5f5b83811061259b5750611450907f3c59e8aa826a7b8b1d103b860ef42496456bf7a5e99e775f267f830df60ef78c946040519485948561464c565b6125a6818585614606565b906125b2818488614617565b916125bc816152ca565b6101e081019261ffff6125ce8561489f565b165f52600960205260405f20905f905b60038210612a55575050506125fe61ffff6125f88561489f565b16614eeb565b156118da5761ffff61260f8461489f565b165f90815260056020526040902060019081015460071c8116146126366102008301615297565b151590151503612a2d5761265561264f61ffff92615523565b9361489f565b165f52600560205260405f209161ffff8151168354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000063ffff0000602085015160101b169216171783556126e461ffff60408301511684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b606081015183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178355608081015183547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff00000000000000001617835560a081015183547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff000000000000000000001617835560c08101519280549060e0830151906028821015610d22576001956102009387936eff00000000000000000000000000007fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff71ffffff0000000000000000000000000000006101008a015160781b16937fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff6dffff00000000000000000000000073ffff0000000000000000000000000000000000006101208d015160901b169760601b16911617169160701b1617171781556128c561ffff6101408601511682907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b6101608401518482547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79ffff00000000000000000000000000000000000000000000000061018084015160c01b167fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffff00000000000000000000000000000000000000000000000000006101a086015160d01b16937fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff77ffff000000000000000000000000000000000000000000007fffff0000000000000000000000000000000000000000000000000000000000006101e07dffff000000000000000000000000000000000000000000000000000000006101c08b015160e01b1699015160f01b169860b01b1691161716171617171781550191015160f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501612561565b7f167fcd83000000000000000000000000000000000000000000000000000000005f5260045ffd5b80359060288210156101845783549060208101359067ffffffffffffffff821682036101845760019384937fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000060ff68ffffffffffffffff0060409660081b169316911617178655019301910190916125de565b34610184575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000274d508dc7384ede2d6b53cafb614e5df4c9de8e163003612b5d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457612bbc614113565b612bc4614136565b906044359073ffffffffffffffffffffffffffffffffffffffff8216809203610184573660a4116101845760a4359073ffffffffffffffffffffffffffffffffffffffff8216809203610184577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549360ff8560401c16159467ffffffffffffffff811680159081612fe2575b6001149081612fd8575b159081612fcf575b50612fa75773ffffffffffffffffffffffffffffffffffffffff92818760017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000879516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055612f52575b50612cd7615726565b612cdf615726565b612ce833614d92565b612cf0615726565b167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55817fffffffffffffffffffffffff0000000000000000000000000000000000000000600254161760025560643573ffffffffffffffffffffffffffffffffffffffff81169081810361018457507fffffffffffffffffffffffff0000000000000000000000000000000000000000600354161760035560843573ffffffffffffffffffffffffffffffffffffffff811690818103610184575f9360209360449250837fffffffffffffffffffffffff000000000000000000000000000000000000000060045416176004557fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c5560405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015610cc957612f33575b50612ea057005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b612f4b9060203d602011611850576118428183614295565b5081612e99565b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005587612cce565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501587612c63565b303b159150612c5b565b879150612c51565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845761301c614113565b6024359067ffffffffffffffff8211610184573660238301121561018457816004013590613049826142ee565b916130576040519384614295565b8083526020830193366024838301011161018457815f9260246020930187378401015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000274d508dc7384ede2d6b53cafb614e5df4c9de8e168030149081156132e3575b50612b5d576130c9614e7f565b73ffffffffffffffffffffffffffffffffffffffff8116926040517f52d1902d000000000000000000000000000000000000000000000000000000008152602081600481885afa5f91816132af575b5061314957847f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8692036132845750823b1561325957807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115613227575f8091610019945190845af46132216148ee565b91615844565b5050503461323157005b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7faa1d49a4000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9091506020813d6020116132db575b816132cb60209383614295565b8101031261018457519086613118565b3d91506132be565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54161415846130bc565b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101845760206133616004356148ae565b604051908152f35b346101845760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576133a0614113565b6024359060443567ffffffffffffffff811161018457366023820112156101845780600401359067ffffffffffffffff82116101845736602460a0840283010111610184576064359167ffffffffffffffff8311610184573660238401121561018457826004013592613412846142d6565b936134206040519586614295565b8085526024602086019160051b8301019136831161018457602401905b82821061373e5750505073ffffffffffffffffffffffffffffffffffffffff6001541633036103c95782511561349b5750508051915f5b83811061347d57005b8061349561348d600193866144a2565b518785615062565b01613474565b9150929150159081156134aa57005b805f52600760205260405f20916137115760448301916134c98361489f565b90549061ffff808360201c16911614908115916136f0575b81156136cf575b501561001957805f52600760205260405f209260248101359063ffffffff8216809203610184578461ffff6136bb82826136b06136c696826136a560c09c8b7e56eae4fd69ed1567b829cf64440f44617faf4302a399a5323390afb84887159f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000859e54161788556135b461357d8361489f565b89547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1660209190911b65ffff0000000016178955565b61369560a460648701966136036135ca8961489f565b8c547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178c55565b61364e608482019b6136148d61489f565b7fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff69ffff000000000000000083549260401b169116179055565b019b6136598d61489f565b7fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff6bffff0000000000000000000083549260501b169116179055565b6040519d8e5260208e015261463d565b1660408b015261463d565b16606088015261463d565b16608085015261463d565b1660a0820152a1005b905061ffff806136e160a4870161489f565b9260501c1691161415846134e8565b90506136fe6084850161489f565b61ffff808360401c1691161415906134e1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b813581526020918201910161343d565b346101845761375c36614159565b613767939193614e7f565b808303613d3a575f5b8381106138045750611450907f79584a4b4b305af3676cf5e9e495bb3ac0d9a121e987efeabfea62d5184ced75946001547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff00000000000000000000000000000000000000006137ee61ffff891661ffff8560a01c16614627565b60a01b169116176001556040519485948561464c565b919290613812838386614606565b9461381e848383614617565b92613828876152ca565b5f955f5b6003811015613d2d578060061b8601356028811015610184576138515760010161382c565b50949196929390955060015b613c8b575b506101e082019161387861ffff6125f88561489f565b613c635761388b61264f61ffff92615523565b165f52600560205260405f209161ffff8151168354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000063ffff0000602085015160101b1692161717835561391a61ffff60408301511684907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff65ffff0000000083549260201b169116179055565b606081015183547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1660309190911b67ffff00000000000016178355608081015183547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1660409190911b69ffff00000000000000001617835560a081015183547fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff1660509190911b6bffff000000000000000000001617835560c08101519280549060e0830151906028821015610d22576001956102009387936eff00000000000000000000000000007fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff71ffffff0000000000000000000000000000006101008a015160781b16937fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff6dffff00000000000000000000000073ffff0000000000000000000000000000000000006101208d015160901b169760601b16911617169160701b161717178155613afb61ffff6101408601511682907fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b6101608401518482547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79ffff00000000000000000000000000000000000000000000000061018084015160c01b167fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7bffff00000000000000000000000000000000000000000000000000006101a086015160d01b16937fffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff77ffff000000000000000000000000000000000000000000007fffff0000000000000000000000000000000000000000000000000000000000006101e07dffff000000000000000000000000000000000000000000000000000000006101c08b015160e01b1699015160f01b169860b01b1691161716171617171781550191015160f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501613770565b7f99174d6d000000000000000000000000000000000000000000000000000000005f5260045ffd5b61ffff613c9b6101e0850161489f565b165f52600960205260405f20905f905b60038210613cba575050613862565b80359060288210156101845783549060208101359067ffffffffffffffff821682036101845760019384937fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000060ff68ffffffffffffffff0060409660081b16931691161717865501930191019091613cab565b509491969293909561385d565b827fab8b67c6000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b346101845760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457600435613da3614e7f565b801561190257613db281614eeb565b156118da576020817fac84845cc731eb4f0b8ac525e95bc2f43caa97b3ee3d73af44b37015973ea9ba925f52600582525f6001604082208281550155604051908152a160015461ffff8160a01c168015611f935775ffff00000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff920160a01b169116176001555f80f35b346101845760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018457613ea6614113565b604435606435602435811515820361018457801561408057610258420190814211611f93575f93613ed5614415565b93602073ffffffffffffffffffffffffffffffffffffffff6004541673ffffffffffffffffffffffffffffffffffffffff6003541660405190613f1782614213565b82825283820152886040820152613f2d88614485565b52613f3787614485565b506064604051809981937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528860448401525af1958615610cc9575f96614063575b50851461400d578490613fe273ffffffffffffffffffffffffffffffffffffffff6002541694604051988997889687957fd69f344c000000000000000000000000000000000000000000000000000000008752600487016145c1565b03925af18015610cc957613ff257005b610019903d805f833e6140058183614295565b8101906144ce565b908490613fe273ffffffffffffffffffffffffffffffffffffffff6002541694604051988997889687957f18a13086000000000000000000000000000000000000000000000000000000008752600487016145c1565b61407b9060203d602011611850576118428183614295565b613f86565b7f14f7bb7f000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101845760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610184576004355f526006602052602061410960243560405f2060019160ff918160081c5f52602052161b60405f205416151590565b6040519015158152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361018457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361018457565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610184576004359167ffffffffffffffff831161018457806023840112156101845782600401359267ffffffffffffffff84116101845781602461024086028301011161018457602401929160243567ffffffffffffffff811161018457826023820112156101845780600401359267ffffffffffffffff841161018457602460c0850283010111610184576024019190565b6060810190811067ffffffffffffffff82111761422f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761422f57604052565b610220810190811067ffffffffffffffff82111761422f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761422f57604052565b67ffffffffffffffff811161422f5760051b60200190565b67ffffffffffffffff811161422f57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9181601f840112156101845782359167ffffffffffffffff8311610184576020808501948460051b01011161018457565b60206060519182815201906080905f5b8181106143765750505090565b8251845260209384019390920191600101614369565b90602080835192838152019201905f5b8181106143a95750505090565b825184526020938401939092019160010161439c565b906028821015610d225752565b90602080835192838152019201905f5b8181106143e95750505090565b909192602080826143fd60019488516143bf565b0194019291016143dc565b91908201809211611f9357565b604080519091906144268382614295565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b82811061445c57505050565b60209060405161446b81614213565b5f81525f838201525f604082015282828501015201614450565b8051156137115760200190565b8051600110156137115760400190565b80518210156137115760209160051b010190565b90816020910312610184575180151581036101845790565b6020818303126101845780519067ffffffffffffffff821161018457019080601f83011215610184578151614502816142d6565b926145106040519485614295565b81845260208085019260051b82010192831161018457602001905b8282106145385750505090565b815181526020918201910161452b565b90602080835192838152019201905f5b8181106145655750505090565b909192602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835273ffffffffffffffffffffffffffffffffffffffff8582015116858401520151151560408201520194019101919091614558565b916080936145fb9173ffffffffffffffffffffffffffffffffffffffff93989796988552602085015260a0604085015260a0840190614548565b951660608201520152565b919081101561371157610240020190565b91908110156137115760c0020190565b9061ffff8091169116019061ffff8211611f9357565b359061ffff8216820361018457565b939293826040820160408352526060810191925f905b8082106146f55750508082036020918201528382520192915f91505b80821061468b5750505090565b9091928084905f905b600382106146b05750505060c08060019201940192019061467e565b8235602881101561018457816146c5916143bf565b60208301359067ffffffffffffffff82168092036101845760408160019360208394015201930191019091614694565b90919261ffff6147048661463d565b16815261ffff6147166020870161463d565b16602082015261ffff61472b6040870161463d565b16604082015261ffff6147406060870161463d565b16606082015261ffff6147556080870161463d565b16608082015261ffff61476a60a0870161463d565b1660a082015261ffff61477f60c0870161463d565b1660c082015260e08501356028811015610184576147a19060e08301906143bf565b61010085013562ffffff81168091036101845761010082015261ffff6147ca610120870161463d565b1661012082015261ffff6147e1610140870161463d565b1661014082015261ffff6147f8610160870161463d565b1661016082015261ffff61480f610180870161463d565b1661018082015261ffff6148266101a0870161463d565b166101a082015261ffff61483d6101c0870161463d565b166101c082015261ffff6148546101e0870161463d565b166101e0820152610200850135801515809103610184576102008201526102208501359060ff8216809203610184576102208101919091526102409485019401929160010190614662565b3561ffff811681036101845790565b5f52600760205263ffffffff60405f20541680156148dc575f52600560205261ffff60405f205460d01c1690565b505f90565b91908203918211611f9357565b3d15614918573d906148ff826142ee565b9161490d6040519384614295565b82523d5f602084013e565b606090565b6040519061492a8261425c565b5f6080838281528260208201528260408201528260608201520152565b60405160a091906149588382614295565b60048152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001366020840137565b90614991826142d6565b61499e6040519182614295565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06149cc82946142d6565b0190602036910137565b6028821015610d225752565b90614a1660609373ffffffffffffffffffffffffffffffffffffffff92979695978452608060208501526080840190614548565b951660408201520152565b9291923415614c1057610258420191824211611f9357614a3f614415565b9473ffffffffffffffffffffffffffffffffffffffff6003541673ffffffffffffffffffffffffffffffffffffffff6004541660405191614a7f83614213565b825260208201525f6040820152614a9587614485565b52614a9f86614485565b5015614b2a575f92939473ffffffffffffffffffffffffffffffffffffffff6002541691614afc604051968795869485947f67ffb66a000000000000000000000000000000000000000000000000000000008652600486016149e2565b039134905af1908115610cc9575f91614b13575090565b614b2791503d805f833e6140058183614295565b90565b5f929473ffffffffffffffffffffffffffffffffffffffff6002541691614b80604051978895869485947f633afc92000000000000000000000000000000000000000000000000000000008652600486016149e2565b039134905af1918215610cc9575f92614bf4575b5081614b9f81614485565b51151580614bd2575b614baf5750565b5f8080614bbf6124d78295614485565b335af1614bca6148ee565b50156124f657565b5073ffffffffffffffffffffffffffffffffffffffff60015416331415614ba8565b614c099192503d805f833e6140058183614295565b905f614b94565b7f9a51c327000000000000000000000000000000000000000000000000000000005f5260045ffd5b60405190614c4582614278565b5f610200838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201520152565b91908110156137115760051b0190565b5f52600560205260405f20549061ffff8260901c1691821591825f14614d8b575f5b61ffff8360b01c1690614d08821591825f14614d815760ff805f5b169116614408565b95614d1b614d1588614987565b97614987565b9515614d5f575b5015614d3d575b5062ffffff60ff8360701c169260781c1690565b614d4685614492565b5261ffff8260c01c16614d5884614492565b525f614d29565b614d6887614485565b5261ffff8460a01c16614d7a86614485565b525f614d22565b60ff806001614d00565b6001614ce5565b73ffffffffffffffffffffffffffffffffffffffff168015614e535773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303614ebf57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b5f52600560205260405f2060405190614f0382614278565b80549061ffff8216835261ffff60208401818460101c168152818460201c166040860152818460301c166060860152818460401c16608086015260a0850194828560501c168652828560601c1660c08201526102007fff00000000000000000000000000000000000000000000000000000000000000600160e0840196614f9060ff8a60701c16896149d6565b62ffffff8960781c16610100860152610120850198878160901c168a52878160a01c16610140870152878160b01c16610160870152878160c01c16610180870152878160d01c166101a0870152878160e01c166101c087015260f01c6101e0860152015460f81b169101525116159283159361503c575b508215615026575b50811561501a575090565b61ffff91505116151590565b909150516028811015610d22571515905f61500f565b5161ffff16151592505f615007565b63ffffffff1663ffffffff8114611f935760010190565b91602491927fe0b5124b12e878158288d1002ed1fb960faff0ec1c7b3168f86d9d1afd1b0d8b604051806150bf8588868460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390a173ffffffffffffffffffffffffffffffffffffffff600c5416602073ffffffffffffffffffffffffffffffffffffffff60015416604051958680927f8c6d99f40000000000000000000000000000000000000000000000000000000082528960048301525afa938415610cc9575f94615258575b5060846020925f73ffffffffffffffffffffffffffffffffffffffff9360405197889586947fec01f01900000000000000000000000000000000000000000000000000000000865260048087015216602485015215156044840152600160648401525af18015610cc957615225575b6151d19150825f52600660205260405f208160081c5f52602052600160ff60405f2092161b8154179055565b805f5260076020525f60408120555f52600a60205260405f2063ffffffff6151fb8183541661504b565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b6020823d602011615250575b8161523e60209383614295565b81010312610184576151d191506151a5565b3d9150615231565b73ffffffffffffffffffffffffffffffffffffffff9194506020925f61528c608493863d8811611850576118428183614295565b969350509250615136565b3580151581036101845790565b9061ffff8091169116039061ffff8211611f9357565b3562ffffff811681036101845790565b61ffff6152da610120830161489f565b1615801561550a575b156154c95761ffff6152f8610160830161489f565b161580156154f1575b156154c95761ffff6153156020830161489f565b161580156154b1575b156154715761ffff6153326060830161489f565b16158015615499575b156154715761ffff61534f60a0830161489f565b16158015615459575b156154315760e0810135602881101561018457158015615417575b156153ef5761ffff6153886101a0830161489f565b161580156153d6575b156153ae576153a66101e061ffff920161489f565b161561190257565b7f2075cc10000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff6153e76101c0830161489f565b161515615391565b7f4f24533e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5062ffffff61542961010083016152ba565b161515615373565b7fe34d2ce8000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff61546960c0830161489f565b161515615358565b7fe42d32dd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff6154a96080830161489f565b16151561533b565b5061ffff6154c16040830161489f565b16151561531e565b7f38539865000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061ffff615502610180830161489f565b161515615301565b5061ffff61551b610140830161489f565b1615156152e3565b61552b614c38565b506155396102008201615297565b1561571f576080905b61554b8161489f565b906155586020820161489f565b906155656040820161489f565b906155726060820161489f565b9061557f6080820161489f565b9061558c60a0820161489f565b9061559960c0820161489f565b90602860e08201351015610184576155b461010082016152ba565b916155c2610120830161489f565b936155d0610140840161489f565b956155de610160850161489f565b976155ec610180860161489f565b996155fa6101a0870161489f565b9b6156086101c0880161489f565b9d604051610500526105005161561d90614278565b61ffff16610500515261ffff16610500516020015261ffff16610500516040015261ffff16610500516060015261ffff16610500516080015261ffff166105005160a0015261ffff166105005160c0015260e001356105005160e00190615683916149d6565b62ffffff1661050051610100015261ffff1661050051610120015261ffff1661050051610140015261ffff1661050051610160015261ffff1661050051610180015261ffff16610500516101a0015261ffff16610500516101c00152610500516101e0015f905260f81b7fff00000000000000000000000000000000000000000000000000000000000000166105005161020001526105005190565b5f90615542565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561575557565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b61ffff6080919493945460e01c1691019061ffff825116908181115f146157d65761ffff916157ab916152a4565b168380821091180280841893036157bf5750565b61ffff6157d181851682845116614627565b169052565b505061ffff5f6157ab565b5f915f91601981101580615839575b8015615822575b6157fe5750565b5f90815260056020526040902054607081901c60ff16935060781c62ffffff169150565b50602f81101580156157f7575060338111156157f7565b5060278111156157f0565b90615881575080511561585957805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806158d4575b615892575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561588a56fea2646970667358221220f77916eb066f258c315702750a721071eb3f9ad9d94bfb6e87fc11fe8abee25964736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.