[
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the\n// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile\n{\n\t\"name\": \"Existing Dockerfile\",\n\t\"build\": {\n\t\t// Sets the run context to one level up instead of the .devcontainer folder.\n\t\t\"context\": \"..\",\n\t\t// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.\n\t\t\"dockerfile\": \"../Dockerfile\",\n\t\t\"args\": {\n\t\t\t\"INSTALL_GIT\": \"true\"\n\t\t}\n\t},\n\n\t// Features to add to the dev container. More info: https://containers.dev/features.\n\t// \"features\": {},\n\t\"features\": {\n\t\t\"ghcr.io/devcontainers-extra/features/hatch:2\": {}\n\t},\n\n\t// Use 'forwardPorts' to make a list of ports inside the container available locally.\n\t// \"forwardPorts\": [],\n\n\t// Uncomment the next line to run commands after the container is created.\n\t// \"postCreateCommand\": \"cat /etc/os-release\",\n\n\t// Configure tool-specific properties.\n\t// \"customizations\": {},\n\n\t// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.\n\t\"remoteUser\": \"root\"\n}\n"
  },
  {
    "path": ".dockerignore",
    "content": "*\n!packages/\n"
  },
  {
    "path": ".gitattributes",
    "content": "packages/markitdown/tests/test_files/** linguist-vendored\npackages/markitdown-sample-plugin/tests/test_files/** linguist-vendored\n\n# Treat PDF files as binary to prevent line ending conversion\n*.pdf binary\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/pre-commit.yml",
    "content": "name: pre-commit\non: [pull_request]\n\njobs:\n  pre-commit:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: \"3.x\"\n\n      - name: Install pre-commit\n        run: |\n          pip install pre-commit\n          pre-commit install --install-hooks\n\n      - name: Run pre-commit\n        run: pre-commit run --all-files\n"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "name: tests\non: [pull_request]\n\njobs:\n  tests:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n      - uses: actions/setup-python@v5\n        with:\n          python-version: |\n            3.10\n            3.11\n            3.12\n      - name: Install Hatch\n        run: pipx install hatch\n      - name: Run tests\n        run: cd packages/markitdown; hatch test\n"
  },
  {
    "path": ".gitignore",
    "content": ".vscode\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n.test-logs/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# pdm\n#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.\n#pdm.lock\n#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it\n#   in version control.\n#   https://pdm.fming.dev/latest/usage/project/#working-with-version-control\n.pdm.toml\n.pdm-python\n.pdm-build/\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\n\n# PyCharm\n#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can\n#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore\n#  and can be added to the global gitignore or merged into this file.  For a more nuclear\n#  option (not recommended) you can uncomment the following to ignore the entire idea folder.\n#.idea/\nsrc/.DS_Store\n.DS_Store\n.cursorrules\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n  - repo: https://github.com/psf/black\n    rev: 23.7.0 # Use the latest version of Black\n    hooks:\n      - id: black\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\n\nResources:\n\n- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)\n- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)\n- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM python:3.13-slim-bullseye\n\nENV DEBIAN_FRONTEND=noninteractive\nENV EXIFTOOL_PATH=/usr/bin/exiftool\nENV FFMPEG_PATH=/usr/bin/ffmpeg\n\n# Runtime dependency\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n    ffmpeg \\\n    exiftool\n\nARG INSTALL_GIT=false\nRUN if [ \"$INSTALL_GIT\" = \"true\" ]; then \\\n    apt-get install -y --no-install-recommends \\\n    git; \\\n    fi\n\n# Cleanup\nRUN rm -rf /var/lib/apt/lists/*\n\nWORKDIR /app\nCOPY . /app\nRUN pip --no-cache-dir install \\\n    /app/packages/markitdown[all] \\\n    /app/packages/markitdown-sample-plugin\n\n# Default USERID and GROUPID\nARG USERID=nobody\nARG GROUPID=nogroup\n\nUSER $USERID:$GROUPID\n\nENTRYPOINT [ \"markitdown\" ]\n"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\n\n    Copyright (c) Microsoft Corporation.\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE\n"
  },
  {
    "path": "README.md",
    "content": "# MarkItDown\n\n[![PyPI](https://img.shields.io/pypi/v/markitdown.svg)](https://pypi.org/project/markitdown/)\n![PyPI - Downloads](https://img.shields.io/pypi/dd/markitdown)\n[![Built by AutoGen Team](https://img.shields.io/badge/Built%20by-AutoGen%20Team-blue)](https://github.com/microsoft/autogen)\n\n> [!TIP]\n> MarkItDown now offers an MCP (Model Context Protocol) server for integration with LLM applications like Claude Desktop. See [markitdown-mcp](https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp) for more information.\n\n> [!IMPORTANT]\n> Breaking changes between 0.0.1 to 0.1.0:\n> * Dependencies are now organized into optional feature-groups (further details below). Use `pip install 'markitdown[all]'` to have backward-compatible behavior.\n> * convert\\_stream() now requires a binary file-like object (e.g., a file opened in binary mode, or an io.BytesIO object). This is a breaking change from the previous version, where it previously also accepted text file-like objects, like io.StringIO.\n> * The DocumentConverter class interface has changed to read from file-like streams rather than file paths. *No temporary files are created anymore*. If you are the maintainer of a plugin, or custom DocumentConverter, you likely need to update your code. Otherwise, if only using the MarkItDown class or CLI (as in these examples), you should not need to change anything.\n\nMarkItDown is a lightweight Python utility for converting various files to Markdown for use with LLMs and related text analysis pipelines. To this end, it is most comparable to [textract](https://github.com/deanmalmgren/textract), but with a focus on preserving important document structure and content as Markdown (including: headings, lists, tables, links, etc.) While the output is often reasonably presentable and human-friendly, it is meant to be consumed by text analysis tools -- and may not be the best option for high-fidelity document conversions for human consumption.\n\nMarkItDown currently supports the conversion from:\n\n- PDF\n- PowerPoint\n- Word\n- Excel\n- Images (EXIF metadata and OCR)\n- Audio (EXIF metadata and speech transcription)\n- HTML\n- Text-based formats (CSV, JSON, XML)\n- ZIP files (iterates over contents)\n- Youtube URLs\n- EPubs\n- ... and more!\n\n## Why Markdown?\n\nMarkdown is extremely close to plain text, with minimal markup or formatting, but still\nprovides a way to represent important document structure. Mainstream LLMs, such as\nOpenAI's GPT-4o, natively \"_speak_\" Markdown, and often incorporate Markdown into their\nresponses unprompted. This suggests that they have been trained on vast amounts of\nMarkdown-formatted text, and understand it well. As a side benefit, Markdown conventions\nare also highly token-efficient.\n\n## Prerequisites\nMarkItDown requires Python 3.10 or higher. It is recommended to use a virtual environment to avoid dependency conflicts.\n\nWith the standard Python installation, you can create and activate a virtual environment using the following commands:\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\n```\n\nIf using `uv`, you can create a virtual environment with:\n\n```bash\nuv venv --python=3.12 .venv\nsource .venv/bin/activate\n# NOTE: Be sure to use 'uv pip install' rather than just 'pip install' to install packages in this virtual environment\n```\n\nIf you are using Anaconda, you can create a virtual environment with:\n\n```bash\nconda create -n markitdown python=3.12\nconda activate markitdown\n```\n\n## Installation\n\nTo install MarkItDown, use pip: `pip install 'markitdown[all]'`. Alternatively, you can install it from the source:\n\n```bash\ngit clone git@github.com:microsoft/markitdown.git\ncd markitdown\npip install -e 'packages/markitdown[all]'\n```\n\n## Usage\n\n### Command-Line\n\n```bash\nmarkitdown path-to-file.pdf > document.md\n```\n\nOr use `-o` to specify the output file:\n\n```bash\nmarkitdown path-to-file.pdf -o document.md\n```\n\nYou can also pipe content:\n\n```bash\ncat path-to-file.pdf | markitdown\n```\n\n### Optional Dependencies\nMarkItDown has optional dependencies for activating various file formats. Earlier in this document, we installed all optional dependencies with the `[all]` option. However, you can also install them individually for more control. For example:\n\n```bash\npip install 'markitdown[pdf, docx, pptx]'\n```\n\nwill install only the dependencies for PDF, DOCX, and PPTX files.\n\nAt the moment, the following optional dependencies are available:\n\n* `[all]` Installs all optional dependencies\n* `[pptx]` Installs dependencies for PowerPoint files\n* `[docx]` Installs dependencies for Word files\n* `[xlsx]` Installs dependencies for Excel files\n* `[xls]` Installs dependencies for older Excel files\n* `[pdf]` Installs dependencies for PDF files\n* `[outlook]` Installs dependencies for Outlook messages\n* `[az-doc-intel]` Installs dependencies for Azure Document Intelligence\n* `[audio-transcription]` Installs dependencies for audio transcription of wav and mp3 files\n* `[youtube-transcription]` Installs dependencies for fetching YouTube video transcription\n\n### Plugins\n\nMarkItDown also supports 3rd-party plugins. Plugins are disabled by default. To list installed plugins:\n\n```bash\nmarkitdown --list-plugins\n```\n\nTo enable plugins use:\n\n```bash\nmarkitdown --use-plugins path-to-file.pdf\n```\n\nTo find available plugins, search GitHub for the hashtag `#markitdown-plugin`. To develop a plugin, see `packages/markitdown-sample-plugin`.\n\n#### markitdown-ocr Plugin\n\nThe `markitdown-ocr` plugin adds OCR support to PDF, DOCX, PPTX, and XLSX converters, extracting text from embedded images using LLM Vision — the same `llm_client` / `llm_model` pattern that MarkItDown already uses for image descriptions. No new ML libraries or binary dependencies required.\n\n**Installation:**\n\n```bash\npip install markitdown-ocr\npip install openai  # or any OpenAI-compatible client\n```\n\n**Usage:**\n\nPass the same `llm_client` and `llm_model` you would use for image descriptions:\n\n```python\nfrom markitdown import MarkItDown\nfrom openai import OpenAI\n\nmd = MarkItDown(\n    enable_plugins=True,\n    llm_client=OpenAI(),\n    llm_model=\"gpt-4o\",\n)\nresult = md.convert(\"document_with_images.pdf\")\nprint(result.text_content)\n```\n\nIf no `llm_client` is provided the plugin still loads, but OCR is silently skipped and the standard built-in converter is used instead.\n\nSee [`packages/markitdown-ocr/README.md`](packages/markitdown-ocr/README.md) for detailed documentation.\n\n### Azure Document Intelligence\n\nTo use Microsoft Document Intelligence for conversion:\n\n```bash\nmarkitdown path-to-file.pdf -o document.md -d -e \"<document_intelligence_endpoint>\"\n```\n\nMore information about how to set up an Azure Document Intelligence Resource can be found [here](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/how-to-guides/create-document-intelligence-resource?view=doc-intel-4.0.0)\n\n### Python API\n\nBasic usage in Python:\n\n```python\nfrom markitdown import MarkItDown\n\nmd = MarkItDown(enable_plugins=False) # Set to True to enable plugins\nresult = md.convert(\"test.xlsx\")\nprint(result.text_content)\n```\n\nDocument Intelligence conversion in Python:\n\n```python\nfrom markitdown import MarkItDown\n\nmd = MarkItDown(docintel_endpoint=\"<document_intelligence_endpoint>\")\nresult = md.convert(\"test.pdf\")\nprint(result.text_content)\n```\n\nTo use Large Language Models for image descriptions (currently only for pptx and image files), provide `llm_client` and `llm_model`:\n\n```python\nfrom markitdown import MarkItDown\nfrom openai import OpenAI\n\nclient = OpenAI()\nmd = MarkItDown(llm_client=client, llm_model=\"gpt-4o\", llm_prompt=\"optional custom prompt\")\nresult = md.convert(\"example.jpg\")\nprint(result.text_content)\n```\n\n### Docker\n\n```sh\ndocker build -t markitdown:latest .\ndocker run --rm -i markitdown:latest < ~/your-file.pdf > output.md\n```\n\n## Contributing\n\nThis project welcomes contributions and suggestions. Most contributions require you to agree to a\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\nthe rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.\n\nWhen you submit a pull request, a CLA bot will automatically determine whether you need to provide\na CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions\nprovided by the bot. You will only need to do this once across all repos using our CLA.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n\n### How to Contribute\n\nYou can help by looking at issues or helping review PRs. Any issue or PR is welcome, but we have also marked some as 'open for contribution' and 'open for reviewing' to help facilitate community contributions. These are of course just suggestions and you are welcome to contribute in any way you like.\n\n<div align=\"center\">\n\n|            | All                                                          | Especially Needs Help from Community                                                                                                      |\n| ---------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |\n| **Issues** | [All Issues](https://github.com/microsoft/markitdown/issues) | [Issues open for contribution](https://github.com/microsoft/markitdown/issues?q=is%3Aissue+is%3Aopen+label%3A%22open+for+contribution%22) |\n| **PRs**    | [All PRs](https://github.com/microsoft/markitdown/pulls)     | [PRs open for reviewing](https://github.com/microsoft/markitdown/pulls?q=is%3Apr+is%3Aopen+label%3A%22open+for+reviewing%22)              |\n\n</div>\n\n### Running Tests and Checks\n\n- Navigate to the MarkItDown package:\n\n  ```sh\n  cd packages/markitdown\n  ```\n\n- Install `hatch` in your environment and run tests:\n\n  ```sh\n  pip install hatch  # Other ways of installing hatch: https://hatch.pypa.io/dev/install/\n  hatch shell\n  hatch test\n  ```\n\n  (Alternative) Use the Devcontainer which has all the dependencies installed:\n\n  ```sh\n  # Reopen the project in Devcontainer and run:\n  hatch test\n  ```\n\n- Run pre-commit checks before submitting a PR: `pre-commit run --all-files`\n\n### Contributing 3rd-party Plugins\n\nYou can also contribute by creating and sharing 3rd party plugins. See `packages/markitdown-sample-plugin` for more details.\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft\ntrademarks or logos is subject to and must follow\n[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin).\n\nIf you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report).\n\nIf you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). \n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs.\n\n## Preferred Languages\n\nWe prefer all communications to be in English.\n\n## Policy\n\nMicrosoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd).\n\n<!-- END MICROSOFT SECURITY.MD BLOCK -->\n"
  },
  {
    "path": "SUPPORT.md",
    "content": "# TODO: The maintainer of this repo has not yet edited this file\r\n\r\n**REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project?\r\n\r\n- **No CSS support:** Fill out this template with information about how to file issues and get help.\r\n- **Yes CSS support:** Fill out an intake form at [aka.ms/onboardsupport](https://aka.ms/onboardsupport). CSS will work with/help you to determine next steps.\r\n- **Not sure?** Fill out an intake as though the answer were \"Yes\". CSS will help you decide.\r\n\r\n*Then remove this first heading from this SUPPORT.MD file before publishing your repo.*\r\n\r\n# Support\r\n\r\n## How to file issues and get help  \r\n\r\nThis project uses GitHub Issues to track bugs and feature requests. Please search the existing \r\nissues before filing new issues to avoid duplicates.  For new issues, file your bug or \r\nfeature request as a new Issue.\r\n\r\nFor help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE \r\nFOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER\r\nCHANNEL. WHERE WILL YOU HELP PEOPLE?**.\r\n\r\n## Microsoft Support Policy  \r\n\r\nSupport for this **PROJECT or PRODUCT** is limited to the resources listed above.\r\n"
  },
  {
    "path": "packages/markitdown/README.md",
    "content": "# MarkItDown\n\n> [!IMPORTANT]\n> MarkItDown is a Python package and command-line utility for converting various files to Markdown (e.g., for indexing, text analysis, etc). \n>\n> For more information, and full documentation, see the project [README.md](https://github.com/microsoft/markitdown) on GitHub.\n\n## Installation\n\nFrom PyPI:\n\n```bash\npip install markitdown[all]\n```\n\nFrom source:\n\n```bash\ngit clone git@github.com:microsoft/markitdown.git\ncd markitdown\npip install -e packages/markitdown[all]\n```\n\n## Usage\n\n### Command-Line\n\n```bash\nmarkitdown path-to-file.pdf > document.md\n```\n\n### Python API\n\n```python\nfrom markitdown import MarkItDown\n\nmd = MarkItDown()\nresult = md.convert(\"test.xlsx\")\nprint(result.text_content)\n```\n\n### More Information\n\nFor more information, and full documentation, see the project [README.md](https://github.com/microsoft/markitdown) on GitHub.\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft\ntrademarks or logos is subject to and must follow\n[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n"
  },
  {
    "path": "packages/markitdown/ThirdPartyNotices.md",
    "content": "# THIRD-PARTY SOFTWARE NOTICES AND INFORMATION\n\n**Do Not Translate or Localize**\n\nThis project incorporates components from the projects listed below. The original copyright notices and the licenses \nunder which MarkItDown received such components are set forth below. MarkItDown reserves all rights not expressly \ngranted herein, whether by implication, estoppel or otherwise.\n\n1.dwml (https://github.com/xiilei/dwml)\n\ndwml NOTICES AND INFORMATION BEGIN HERE\n\n-----------------------------------------\n\nNOTE 1: What follows is a verbatim copy of dwml's LICENSE file, as it appeared on March 28th, 2025 - including \nplaceholders for the copyright owner and year.\n\nNOTE 2: The Apache License, Version 2.0, requires that modifications to the dwml source code be documented.  \nThe following section summarizes these changes. The full details are available in the MarkItDown source code \nrepository under PR #1160 (https://github.com/microsoft/markitdown/pull/1160)\n\nThis project incorporates `dwml/latex_dict.py` and `dwml/omml.py` files without any additional logic modifications (which \nlives in `packages/markitdown/src/markitdown/converter_utils/docx/math` location). However, we have reformatted the code\naccording to `black` code formatter.  From `tests/docx.py` file, we have used `DOCXML_ROOT` XML namespaces and the rest of \nthe file is not used.\n\n-----------------------------------------\n\nApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-----------------------------------------\nEND OF dwml NOTICES AND INFORMATION"
  },
  {
    "path": "packages/markitdown/pyproject.toml",
    "content": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"markitdown\"\ndynamic = [\"version\"]\ndescription = 'Utility tool for converting various files to Markdown'\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = \"MIT\"\nkeywords = []\nauthors = [\n  { name = \"Adam Fourney\", email = \"adamfo@microsoft.com\" },\n]\nclassifiers = [\n  \"Development Status :: 4 - Beta\",\n  \"Programming Language :: Python\",\n  \"Programming Language :: Python :: 3.10\",\n  \"Programming Language :: Python :: 3.11\",\n  \"Programming Language :: Python :: 3.12\",\n  \"Programming Language :: Python :: 3.13\",\n  \"Programming Language :: Python :: Implementation :: CPython\",\n  \"Programming Language :: Python :: Implementation :: PyPy\",\n]\ndependencies = [\n  \"beautifulsoup4\",\n  \"requests\",\n  \"markdownify\",\n  \"magika~=0.6.1\",\n  \"charset-normalizer\",\n  \"defusedxml\",\n]\n\n[project.optional-dependencies]\nall = [\n  \"python-pptx\",\n  \"mammoth~=1.11.0\",\n  \"pandas\",\n  \"openpyxl\",\n  \"xlrd\",\n  \"lxml\",\n  \"pdfminer.six>=20251230\",\n  \"pdfplumber>=0.11.9\",\n  \"olefile\",\n  \"pydub\",\n  \"SpeechRecognition\",\n  \"youtube-transcript-api~=1.0.0\",\n  \"azure-ai-documentintelligence\",\n  \"azure-identity\",\n]\npptx = [\"python-pptx\"]\ndocx = [\"mammoth~=1.11.0\", \"lxml\"]\nxlsx = [\"pandas\", \"openpyxl\"]\nxls = [\"pandas\", \"xlrd\"]\npdf = [\"pdfminer.six>=20251230\", \"pdfplumber>=0.11.9\"]\noutlook = [\"olefile\"]\naudio-transcription = [\"pydub\", \"SpeechRecognition\"]\nyoutube-transcription = [\"youtube-transcript-api\"]\naz-doc-intel = [\"azure-ai-documentintelligence\", \"azure-identity\"]\n\n[project.urls]\nDocumentation = \"https://github.com/microsoft/markitdown#readme\"\nIssues = \"https://github.com/microsoft/markitdown/issues\"\nSource = \"https://github.com/microsoft/markitdown\"\n\n[tool.hatch.version]\npath = \"src/markitdown/__about__.py\"\n\n[project.scripts]\nmarkitdown = \"markitdown.__main__:main\"\n\n[tool.hatch.envs.default]\nfeatures = [\"all\"]\n\n[tool.hatch.envs.hatch-test]\nfeatures = [\"all\"]\nextra-dependencies = [\n  \"openai\",\n]\n\n[tool.hatch.envs.types]\nfeatures = [\"all\"]\nextra-dependencies = [\n  \"openai\",\n  \"mypy>=1.0.0\",\n]\n\n[tool.hatch.envs.types.scripts]\ncheck = \"mypy --install-types --non-interactive --ignore-missing-imports {args:src/markitdown tests}\"\n\n[tool.coverage.run]\nsource_pkgs = [\"markitdown\", \"tests\"]\nbranch = true\nparallel = true\nomit = [\n  \"src/markitdown/__about__.py\",\n]\n\n[tool.coverage.paths]\nmarkitdown = [\"src/markitdown\", \"*/markitdown/src/markitdown\"]\ntests = [\"tests\", \"*/markitdown/tests\"]\n\n[tool.coverage.report]\nexclude_lines = [\n  \"no cov\",\n  \"if __name__ == .__main__.:\",\n  \"if TYPE_CHECKING:\",\n]\n\n[tool.hatch.build.targets.sdist]\nonly-include = [\"src/markitdown\"]\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/__about__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n__version__ = \"0.1.6b2\"\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n\nfrom .__about__ import __version__\nfrom ._markitdown import (\n    MarkItDown,\n    PRIORITY_SPECIFIC_FILE_FORMAT,\n    PRIORITY_GENERIC_FILE_FORMAT,\n)\nfrom ._base_converter import DocumentConverterResult, DocumentConverter\nfrom ._stream_info import StreamInfo\nfrom ._exceptions import (\n    MarkItDownException,\n    MissingDependencyException,\n    FailedConversionAttempt,\n    FileConversionException,\n    UnsupportedFormatException,\n)\n\n__all__ = [\n    \"__version__\",\n    \"MarkItDown\",\n    \"DocumentConverter\",\n    \"DocumentConverterResult\",\n    \"MarkItDownException\",\n    \"MissingDependencyException\",\n    \"FailedConversionAttempt\",\n    \"FileConversionException\",\n    \"UnsupportedFormatException\",\n    \"StreamInfo\",\n    \"PRIORITY_SPECIFIC_FILE_FORMAT\",\n    \"PRIORITY_GENERIC_FILE_FORMAT\",\n]\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/__main__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\nimport argparse\nimport sys\nimport codecs\nfrom textwrap import dedent\nfrom importlib.metadata import entry_points\nfrom .__about__ import __version__\nfrom ._markitdown import MarkItDown, StreamInfo, DocumentConverterResult\n\n\ndef main():\n    parser = argparse.ArgumentParser(\n        description=\"Convert various file formats to markdown.\",\n        prog=\"markitdown\",\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n        usage=dedent(\n            \"\"\"\n            SYNTAX:\n\n                markitdown <OPTIONAL: FILENAME>\n                If FILENAME is empty, markitdown reads from stdin.\n\n            EXAMPLE:\n\n                markitdown example.pdf\n\n                OR\n\n                cat example.pdf | markitdown\n\n                OR\n\n                markitdown < example.pdf\n\n                OR to save to a file use\n\n                markitdown example.pdf -o example.md\n\n                OR\n\n                markitdown example.pdf > example.md\n            \"\"\"\n        ).strip(),\n    )\n\n    parser.add_argument(\n        \"-v\",\n        \"--version\",\n        action=\"version\",\n        version=f\"%(prog)s {__version__}\",\n        help=\"show the version number and exit\",\n    )\n\n    parser.add_argument(\n        \"-o\",\n        \"--output\",\n        help=\"Output file name. If not provided, output is written to stdout.\",\n    )\n\n    parser.add_argument(\n        \"-x\",\n        \"--extension\",\n        help=\"Provide a hint about the file extension (e.g., when reading from stdin).\",\n    )\n\n    parser.add_argument(\n        \"-m\",\n        \"--mime-type\",\n        help=\"Provide a hint about the file's MIME type.\",\n    )\n\n    parser.add_argument(\n        \"-c\",\n        \"--charset\",\n        help=\"Provide a hint about the file's charset (e.g, UTF-8).\",\n    )\n\n    parser.add_argument(\n        \"-d\",\n        \"--use-docintel\",\n        action=\"store_true\",\n        help=\"Use Document Intelligence to extract text instead of offline conversion. Requires a valid Document Intelligence Endpoint.\",\n    )\n\n    parser.add_argument(\n        \"-e\",\n        \"--endpoint\",\n        type=str,\n        help=\"Document Intelligence Endpoint. Required if using Document Intelligence.\",\n    )\n\n    parser.add_argument(\n        \"-p\",\n        \"--use-plugins\",\n        action=\"store_true\",\n        help=\"Use 3rd-party plugins to convert files. Use --list-plugins to see installed plugins.\",\n    )\n\n    parser.add_argument(\n        \"--list-plugins\",\n        action=\"store_true\",\n        help=\"List installed 3rd-party plugins. Plugins are loaded when using the -p or --use-plugin option.\",\n    )\n\n    parser.add_argument(\n        \"--keep-data-uris\",\n        action=\"store_true\",\n        help=\"Keep data URIs (like base64-encoded images) in the output. By default, data URIs are truncated.\",\n    )\n\n    parser.add_argument(\"filename\", nargs=\"?\")\n    args = parser.parse_args()\n\n    # Parse the extension hint\n    extension_hint = args.extension\n    if extension_hint is not None:\n        extension_hint = extension_hint.strip().lower()\n        if len(extension_hint) > 0:\n            if not extension_hint.startswith(\".\"):\n                extension_hint = \".\" + extension_hint\n        else:\n            extension_hint = None\n\n    # Parse the mime type\n    mime_type_hint = args.mime_type\n    if mime_type_hint is not None:\n        mime_type_hint = mime_type_hint.strip()\n        if len(mime_type_hint) > 0:\n            if mime_type_hint.count(\"/\") != 1:\n                _exit_with_error(f\"Invalid MIME type: {mime_type_hint}\")\n        else:\n            mime_type_hint = None\n\n    # Parse the charset\n    charset_hint = args.charset\n    if charset_hint is not None:\n        charset_hint = charset_hint.strip()\n        if len(charset_hint) > 0:\n            try:\n                charset_hint = codecs.lookup(charset_hint).name\n            except LookupError:\n                _exit_with_error(f\"Invalid charset: {charset_hint}\")\n        else:\n            charset_hint = None\n\n    stream_info = None\n    if (\n        extension_hint is not None\n        or mime_type_hint is not None\n        or charset_hint is not None\n    ):\n        stream_info = StreamInfo(\n            extension=extension_hint, mimetype=mime_type_hint, charset=charset_hint\n        )\n\n    if args.list_plugins:\n        # List installed plugins, then exit\n        print(\"Installed MarkItDown 3rd-party Plugins:\\n\")\n        plugin_entry_points = list(entry_points(group=\"markitdown.plugin\"))\n        if len(plugin_entry_points) == 0:\n            print(\"  * No 3rd-party plugins installed.\")\n            print(\n                \"\\nFind plugins by searching for the hashtag #markitdown-plugin on GitHub.\\n\"\n            )\n        else:\n            for entry_point in plugin_entry_points:\n                print(f\"  * {entry_point.name:<16}\\t(package: {entry_point.value})\")\n            print(\n                \"\\nUse the -p (or --use-plugins) option to enable 3rd-party plugins.\\n\"\n            )\n        sys.exit(0)\n\n    if args.use_docintel:\n        if args.endpoint is None:\n            _exit_with_error(\n                \"Document Intelligence Endpoint is required when using Document Intelligence.\"\n            )\n        elif args.filename is None:\n            _exit_with_error(\"Filename is required when using Document Intelligence.\")\n\n        markitdown = MarkItDown(\n            enable_plugins=args.use_plugins, docintel_endpoint=args.endpoint\n        )\n    else:\n        markitdown = MarkItDown(enable_plugins=args.use_plugins)\n\n    if args.filename is None:\n        result = markitdown.convert_stream(\n            sys.stdin.buffer,\n            stream_info=stream_info,\n            keep_data_uris=args.keep_data_uris,\n        )\n    else:\n        result = markitdown.convert(\n            args.filename, stream_info=stream_info, keep_data_uris=args.keep_data_uris\n        )\n\n    _handle_output(args, result)\n\n\ndef _handle_output(args, result: DocumentConverterResult):\n    \"\"\"Handle output to stdout or file\"\"\"\n    if args.output:\n        with open(args.output, \"w\", encoding=\"utf-8\") as f:\n            f.write(result.markdown)\n    else:\n        # Handle stdout encoding errors more gracefully\n        print(\n            result.markdown.encode(sys.stdout.encoding, errors=\"replace\").decode(\n                sys.stdout.encoding\n            )\n        )\n\n\ndef _exit_with_error(message: str):\n    print(message)\n    sys.exit(1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/_base_converter.py",
    "content": "from typing import Any, BinaryIO, Optional\nfrom ._stream_info import StreamInfo\n\n\nclass DocumentConverterResult:\n    \"\"\"The result of converting a document to Markdown.\"\"\"\n\n    def __init__(\n        self,\n        markdown: str,\n        *,\n        title: Optional[str] = None,\n    ):\n        \"\"\"\n        Initialize the DocumentConverterResult.\n\n        The only required parameter is the converted Markdown text.\n        The title, and any other metadata that may be added in the future, are optional.\n\n        Parameters:\n        - markdown: The converted Markdown text.\n        - title: Optional title of the document.\n        \"\"\"\n        self.markdown = markdown\n        self.title = title\n\n    @property\n    def text_content(self) -> str:\n        \"\"\"Soft-deprecated alias for `markdown`. New code should migrate to using `markdown` or __str__.\"\"\"\n        return self.markdown\n\n    @text_content.setter\n    def text_content(self, markdown: str):\n        \"\"\"Soft-deprecated alias for `markdown`. New code should migrate to using `markdown` or __str__.\"\"\"\n        self.markdown = markdown\n\n    def __str__(self) -> str:\n        \"\"\"Return the converted Markdown text.\"\"\"\n        return self.markdown\n\n\nclass DocumentConverter:\n    \"\"\"Abstract superclass of all DocumentConverters.\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        \"\"\"\n        Return a quick determination on if the converter should attempt converting the document.\n        This is primarily based `stream_info` (typically, `stream_info.mimetype`, `stream_info.extension`).\n        In cases where the data is retrieved via HTTP, the `steam_info.url` might also be referenced to\n        make a determination (e.g., special converters for Wikipedia, YouTube etc).\n        Finally, it is conceivable that the `stream_info.filename` might be used to in cases\n        where the filename is well-known (e.g., `Dockerfile`, `Makefile`, etc)\n\n        NOTE: The method signature is designed to match that of the convert() method. This provides some\n        assurance that, if accepts() returns True, the convert() method will also be able to handle the document.\n\n        IMPORTANT: In rare cases, (e.g., OutlookMsgConverter) we need to read more from the stream to make a final\n        determination. Read operations inevitably advances the position in file_stream. In these case, the position\n        MUST be reset it MUST be reset before returning. This is because the convert() method may be called immediately\n        after accepts(), and will expect the file_stream to be at the original position.\n\n        E.g.,\n        cur_pos = file_stream.tell() # Save the current position\n        data = file_stream.read(100) # ... peek at the first 100 bytes, etc.\n        file_stream.seek(cur_pos)    # Reset the position to the original position\n\n        Parameters:\n        - file_stream: The file-like object to convert. Must support seek(), tell(), and read() methods.\n        - stream_info: The StreamInfo object containing metadata about the file (mimetype, extension, charset, set)\n        - kwargs: Additional keyword arguments for the converter.\n\n        Returns:\n        - bool: True if the converter can handle the document, False otherwise.\n        \"\"\"\n        raise NotImplementedError(\n            f\"The subclass, {type(self).__name__}, must implement the accepts() method to determine if they can handle the document.\"\n        )\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        \"\"\"\n        Convert a document to Markdown text.\n\n        Parameters:\n        - file_stream: The file-like object to convert. Must support seek(), tell(), and read() methods.\n        - stream_info: The StreamInfo object containing metadata about the file (mimetype, extension, charset, set)\n        - kwargs: Additional keyword arguments for the converter.\n\n        Returns:\n        - DocumentConverterResult: The result of the conversion, which includes the title and markdown content.\n\n        Raises:\n        - FileConversionException: If the mimetype is recognized, but the conversion fails for some other reason.\n        - MissingDependencyException: If the converter requires a dependency that is not installed.\n        \"\"\"\n        raise NotImplementedError(\"Subclasses must implement this method\")\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/_exceptions.py",
    "content": "from typing import Optional, List, Any\n\nMISSING_DEPENDENCY_MESSAGE = \"\"\"{converter} recognized the input as a potential {extension} file, but the dependencies needed to read {extension} files have not been installed. To resolve this error, include the optional dependency [{feature}] or [all] when installing MarkItDown. For example:\n\n* pip install markitdown[{feature}]\n* pip install markitdown[all]\n* pip install markitdown[{feature}, ...]\n* etc.\"\"\"\n\n\nclass MarkItDownException(Exception):\n    \"\"\"\n    Base exception class for MarkItDown.\n    \"\"\"\n\n    pass\n\n\nclass MissingDependencyException(MarkItDownException):\n    \"\"\"\n    Converters shipped with MarkItDown may depend on optional\n    dependencies. This exception is thrown when a converter's\n    convert() method is called, but the required dependency is not\n    installed. This is not necessarily a fatal error, as the converter\n    will simply be skipped (an error will bubble up only if no other\n    suitable converter is found).\n\n    Error messages should clearly indicate which dependency is missing.\n    \"\"\"\n\n    pass\n\n\nclass UnsupportedFormatException(MarkItDownException):\n    \"\"\"\n    Thrown when no suitable converter was found for the given file.\n    \"\"\"\n\n    pass\n\n\nclass FailedConversionAttempt(object):\n    \"\"\"\n    Represents an a single attempt to convert a file.\n    \"\"\"\n\n    def __init__(self, converter: Any, exc_info: Optional[tuple] = None):\n        self.converter = converter\n        self.exc_info = exc_info\n\n\nclass FileConversionException(MarkItDownException):\n    \"\"\"\n    Thrown when a suitable converter was found, but the conversion\n    process fails for any reason.\n    \"\"\"\n\n    def __init__(\n        self,\n        message: Optional[str] = None,\n        attempts: Optional[List[FailedConversionAttempt]] = None,\n    ):\n        self.attempts = attempts\n\n        if message is None:\n            if attempts is None:\n                message = \"File conversion failed.\"\n            else:\n                message = f\"File conversion failed after {len(attempts)} attempts:\\n\"\n                for attempt in attempts:\n                    if attempt.exc_info is None:\n                        message += f\" -  {type(attempt.converter).__name__} provided no execution info.\"\n                    else:\n                        message += f\" - {type(attempt.converter).__name__} threw {attempt.exc_info[0].__name__} with message: {attempt.exc_info[1]}\\n\"\n\n        super().__init__(message)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/_markitdown.py",
    "content": "import mimetypes\nimport os\nimport re\nimport sys\nimport shutil\nimport traceback\nimport io\nfrom dataclasses import dataclass\nfrom importlib.metadata import entry_points\nfrom typing import Any, List, Dict, Optional, Union, BinaryIO\nfrom pathlib import Path\nfrom urllib.parse import urlparse\nfrom warnings import warn\nimport requests\nimport magika\nimport charset_normalizer\nimport codecs\n\nfrom ._stream_info import StreamInfo\nfrom ._uri_utils import parse_data_uri, file_uri_to_path\n\nfrom .converters import (\n    PlainTextConverter,\n    HtmlConverter,\n    RssConverter,\n    WikipediaConverter,\n    YouTubeConverter,\n    IpynbConverter,\n    BingSerpConverter,\n    PdfConverter,\n    DocxConverter,\n    XlsxConverter,\n    XlsConverter,\n    PptxConverter,\n    ImageConverter,\n    AudioConverter,\n    OutlookMsgConverter,\n    ZipConverter,\n    EpubConverter,\n    DocumentIntelligenceConverter,\n    CsvConverter,\n)\n\nfrom ._base_converter import DocumentConverter, DocumentConverterResult\n\nfrom ._exceptions import (\n    FileConversionException,\n    UnsupportedFormatException,\n    FailedConversionAttempt,\n)\n\n\n# Lower priority values are tried first.\nPRIORITY_SPECIFIC_FILE_FORMAT = (\n    0.0  # e.g., .docx, .pdf, .xlsx, Or specific pages, e.g., wikipedia\n)\nPRIORITY_GENERIC_FILE_FORMAT = (\n    10.0  # Near catch-all converters for mimetypes like text/*, etc.\n)\n\n\n_plugins: Union[None, List[Any]] = None  # If None, plugins have not been loaded yet.\n\n\ndef _load_plugins() -> Union[None, List[Any]]:\n    \"\"\"Lazy load plugins, exiting early if already loaded.\"\"\"\n    global _plugins\n\n    # Skip if we've already loaded plugins\n    if _plugins is not None:\n        return _plugins\n\n    # Load plugins\n    _plugins = []\n    for entry_point in entry_points(group=\"markitdown.plugin\"):\n        try:\n            _plugins.append(entry_point.load())\n        except Exception:\n            tb = traceback.format_exc()\n            warn(f\"Plugin '{entry_point.name}' failed to load ... skipping:\\n{tb}\")\n\n    return _plugins\n\n\n@dataclass(kw_only=True, frozen=True)\nclass ConverterRegistration:\n    \"\"\"A registration of a converter with its priority and other metadata.\"\"\"\n\n    converter: DocumentConverter\n    priority: float\n\n\nclass MarkItDown:\n    \"\"\"(In preview) An extremely simple text-based document reader, suitable for LLM use.\n    This reader will convert common file-types or webpages to Markdown.\"\"\"\n\n    def __init__(\n        self,\n        *,\n        enable_builtins: Union[None, bool] = None,\n        enable_plugins: Union[None, bool] = None,\n        **kwargs,\n    ):\n        self._builtins_enabled = False\n        self._plugins_enabled = False\n\n        requests_session = kwargs.get(\"requests_session\")\n        if requests_session is None:\n            self._requests_session = requests.Session()\n            # Signal that we prefer markdown over HTML, etc. if the server supports it.\n            # e.g., https://blog.cloudflare.com/markdown-for-agents/\n            self._requests_session.headers.update(\n                {\n                    \"Accept\": \"text/markdown, text/html;q=0.9, text/plain;q=0.8, */*;q=0.1\"\n                }\n            )\n        else:\n            self._requests_session = requests_session\n\n        self._magika = magika.Magika()\n\n        # TODO - remove these (see enable_builtins)\n        self._llm_client: Any = None\n        self._llm_model: Union[str | None] = None\n        self._llm_prompt: Union[str | None] = None\n        self._exiftool_path: Union[str | None] = None\n        self._style_map: Union[str | None] = None\n\n        # Register the converters\n        self._converters: List[ConverterRegistration] = []\n\n        if (\n            enable_builtins is None or enable_builtins\n        ):  # Default to True when not specified\n            self.enable_builtins(**kwargs)\n\n        if enable_plugins:\n            self.enable_plugins(**kwargs)\n\n    def enable_builtins(self, **kwargs) -> None:\n        \"\"\"\n        Enable and register built-in converters.\n        Built-in converters are enabled by default.\n        This method should only be called once, if built-ins were initially disabled.\n        \"\"\"\n        if not self._builtins_enabled:\n            # TODO: Move these into converter constructors\n            self._llm_client = kwargs.get(\"llm_client\")\n            self._llm_model = kwargs.get(\"llm_model\")\n            self._llm_prompt = kwargs.get(\"llm_prompt\")\n            self._exiftool_path = kwargs.get(\"exiftool_path\")\n            self._style_map = kwargs.get(\"style_map\")\n\n            if self._exiftool_path is None:\n                self._exiftool_path = os.getenv(\"EXIFTOOL_PATH\")\n\n            # Still none? Check well-known paths\n            if self._exiftool_path is None:\n                candidate = shutil.which(\"exiftool\")\n                if candidate:\n                    candidate = os.path.abspath(candidate)\n                    if any(\n                        d == os.path.dirname(candidate)\n                        for d in [\n                            \"/usr/bin\",\n                            \"/usr/local/bin\",\n                            \"/opt\",\n                            \"/opt/bin\",\n                            \"/opt/local/bin\",\n                            \"/opt/homebrew/bin\",\n                            \"C:\\\\Windows\\\\System32\",\n                            \"C:\\\\Program Files\",\n                            \"C:\\\\Program Files (x86)\",\n                        ]\n                    ):\n                        self._exiftool_path = candidate\n\n            # Register converters for successful browsing operations\n            # Later registrations are tried first / take higher priority than earlier registrations\n            # To this end, the most specific converters should appear below the most generic converters\n            self.register_converter(\n                PlainTextConverter(), priority=PRIORITY_GENERIC_FILE_FORMAT\n            )\n            self.register_converter(\n                ZipConverter(markitdown=self), priority=PRIORITY_GENERIC_FILE_FORMAT\n            )\n            self.register_converter(\n                HtmlConverter(), priority=PRIORITY_GENERIC_FILE_FORMAT\n            )\n            self.register_converter(RssConverter())\n            self.register_converter(WikipediaConverter())\n            self.register_converter(YouTubeConverter())\n            self.register_converter(BingSerpConverter())\n            self.register_converter(DocxConverter())\n            self.register_converter(XlsxConverter())\n            self.register_converter(XlsConverter())\n            self.register_converter(PptxConverter())\n            self.register_converter(AudioConverter())\n            self.register_converter(ImageConverter())\n            self.register_converter(IpynbConverter())\n            self.register_converter(PdfConverter())\n            self.register_converter(OutlookMsgConverter())\n            self.register_converter(EpubConverter())\n            self.register_converter(CsvConverter())\n\n            # Register Document Intelligence converter at the top of the stack if endpoint is provided\n            docintel_endpoint = kwargs.get(\"docintel_endpoint\")\n            if docintel_endpoint is not None:\n                docintel_args: Dict[str, Any] = {}\n                docintel_args[\"endpoint\"] = docintel_endpoint\n\n                docintel_credential = kwargs.get(\"docintel_credential\")\n                if docintel_credential is not None:\n                    docintel_args[\"credential\"] = docintel_credential\n\n                docintel_types = kwargs.get(\"docintel_file_types\")\n                if docintel_types is not None:\n                    docintel_args[\"file_types\"] = docintel_types\n\n                docintel_version = kwargs.get(\"docintel_api_version\")\n                if docintel_version is not None:\n                    docintel_args[\"api_version\"] = docintel_version\n\n                self.register_converter(\n                    DocumentIntelligenceConverter(**docintel_args),\n                )\n\n            self._builtins_enabled = True\n        else:\n            warn(\"Built-in converters are already enabled.\", RuntimeWarning)\n\n    def enable_plugins(self, **kwargs) -> None:\n        \"\"\"\n        Enable and register converters provided by plugins.\n        Plugins are disabled by default.\n        This method should only be called once, if plugins were initially disabled.\n        \"\"\"\n        if not self._plugins_enabled:\n            # Load plugins\n            plugins = _load_plugins()\n            assert plugins is not None\n            for plugin in plugins:\n                try:\n                    plugin.register_converters(self, **kwargs)\n                except Exception:\n                    tb = traceback.format_exc()\n                    warn(f\"Plugin '{plugin}' failed to register converters:\\n{tb}\")\n            self._plugins_enabled = True\n        else:\n            warn(\"Plugins converters are already enabled.\", RuntimeWarning)\n\n    def convert(\n        self,\n        source: Union[str, requests.Response, Path, BinaryIO],\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:  # TODO: deal with kwargs\n        \"\"\"\n        Args:\n            - source: can be a path (str or Path), url, or a requests.response object\n            - stream_info: optional stream info to use for the conversion. If None, infer from source\n            - kwargs: additional arguments to pass to the converter\n        \"\"\"\n\n        # Local path or url\n        if isinstance(source, str):\n            if (\n                source.startswith(\"http:\")\n                or source.startswith(\"https:\")\n                or source.startswith(\"file:\")\n                or source.startswith(\"data:\")\n            ):\n                # Rename the url argument to mock_url\n                # (Deprecated -- use stream_info)\n                _kwargs = {k: v for k, v in kwargs.items()}\n                if \"url\" in _kwargs:\n                    _kwargs[\"mock_url\"] = _kwargs[\"url\"]\n                    del _kwargs[\"url\"]\n\n                return self.convert_uri(source, stream_info=stream_info, **_kwargs)\n            else:\n                return self.convert_local(source, stream_info=stream_info, **kwargs)\n        # Path object\n        elif isinstance(source, Path):\n            return self.convert_local(source, stream_info=stream_info, **kwargs)\n        # Request response\n        elif isinstance(source, requests.Response):\n            return self.convert_response(source, stream_info=stream_info, **kwargs)\n        # Binary stream\n        elif (\n            hasattr(source, \"read\")\n            and callable(source.read)\n            and not isinstance(source, io.TextIOBase)\n        ):\n            return self.convert_stream(source, stream_info=stream_info, **kwargs)\n        else:\n            raise TypeError(\n                f\"Invalid source type: {type(source)}. Expected str, requests.Response, BinaryIO.\"\n            )\n\n    def convert_local(\n        self,\n        path: Union[str, Path],\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        file_extension: Optional[str] = None,  # Deprecated -- use stream_info\n        url: Optional[str] = None,  # Deprecated -- use stream_info\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if isinstance(path, Path):\n            path = str(path)\n\n        # Build a base StreamInfo object from which to start guesses\n        base_guess = StreamInfo(\n            local_path=path,\n            extension=os.path.splitext(path)[1],\n            filename=os.path.basename(path),\n        )\n\n        # Extend the base_guess with any additional info from the arguments\n        if stream_info is not None:\n            base_guess = base_guess.copy_and_update(stream_info)\n\n        if file_extension is not None:\n            # Deprecated -- use stream_info\n            base_guess = base_guess.copy_and_update(extension=file_extension)\n\n        if url is not None:\n            # Deprecated -- use stream_info\n            base_guess = base_guess.copy_and_update(url=url)\n\n        with open(path, \"rb\") as fh:\n            guesses = self._get_stream_info_guesses(\n                file_stream=fh, base_guess=base_guess\n            )\n            return self._convert(file_stream=fh, stream_info_guesses=guesses, **kwargs)\n\n    def convert_stream(\n        self,\n        stream: BinaryIO,\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        file_extension: Optional[str] = None,  # Deprecated -- use stream_info\n        url: Optional[str] = None,  # Deprecated -- use stream_info\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        guesses: List[StreamInfo] = []\n\n        # Do we have anything on which to base a guess?\n        base_guess = None\n        if stream_info is not None or file_extension is not None or url is not None:\n            # Start with a non-Null base guess\n            if stream_info is None:\n                base_guess = StreamInfo()\n            else:\n                base_guess = stream_info\n\n            if file_extension is not None:\n                # Deprecated -- use stream_info\n                assert base_guess is not None  # for mypy\n                base_guess = base_guess.copy_and_update(extension=file_extension)\n\n            if url is not None:\n                # Deprecated -- use stream_info\n                assert base_guess is not None  # for mypy\n                base_guess = base_guess.copy_and_update(url=url)\n\n        # Check if we have a seekable stream. If not, load the entire stream into memory.\n        if not stream.seekable():\n            buffer = io.BytesIO()\n            while True:\n                chunk = stream.read(4096)\n                if not chunk:\n                    break\n                buffer.write(chunk)\n            buffer.seek(0)\n            stream = buffer\n\n        # Add guesses based on stream content\n        guesses = self._get_stream_info_guesses(\n            file_stream=stream, base_guess=base_guess or StreamInfo()\n        )\n        return self._convert(file_stream=stream, stream_info_guesses=guesses, **kwargs)\n\n    def convert_url(\n        self,\n        url: str,\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        file_extension: Optional[str] = None,\n        mock_url: Optional[str] = None,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        \"\"\"Alias for convert_uri()\"\"\"\n        # convert_url will likely be deprecated in the future in favor of convert_uri\n        return self.convert_uri(\n            url,\n            stream_info=stream_info,\n            file_extension=file_extension,\n            mock_url=mock_url,\n            **kwargs,\n        )\n\n    def convert_uri(\n        self,\n        uri: str,\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        file_extension: Optional[str] = None,  # Deprecated -- use stream_info\n        mock_url: Optional[\n            str\n        ] = None,  # Mock the request as if it came from a different URL\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        uri = uri.strip()\n\n        # File URIs\n        if uri.startswith(\"file:\"):\n            netloc, path = file_uri_to_path(uri)\n            if netloc and netloc != \"localhost\":\n                raise ValueError(\n                    f\"Unsupported file URI: {uri}. Netloc must be empty or localhost.\"\n                )\n            return self.convert_local(\n                path,\n                stream_info=stream_info,\n                file_extension=file_extension,\n                url=mock_url,\n                **kwargs,\n            )\n        # Data URIs\n        elif uri.startswith(\"data:\"):\n            mimetype, attributes, data = parse_data_uri(uri)\n\n            base_guess = StreamInfo(\n                mimetype=mimetype,\n                charset=attributes.get(\"charset\"),\n            )\n            if stream_info is not None:\n                base_guess = base_guess.copy_and_update(stream_info)\n\n            return self.convert_stream(\n                io.BytesIO(data),\n                stream_info=base_guess,\n                file_extension=file_extension,\n                url=mock_url,\n                **kwargs,\n            )\n        # HTTP/HTTPS URIs\n        elif uri.startswith(\"http:\") or uri.startswith(\"https:\"):\n            response = self._requests_session.get(uri, stream=True)\n            response.raise_for_status()\n            return self.convert_response(\n                response,\n                stream_info=stream_info,\n                file_extension=file_extension,\n                url=mock_url,\n                **kwargs,\n            )\n        else:\n            raise ValueError(\n                f\"Unsupported URI scheme: {uri.split(':')[0]}. Supported schemes are: file:, data:, http:, https:\"\n            )\n\n    def convert_response(\n        self,\n        response: requests.Response,\n        *,\n        stream_info: Optional[StreamInfo] = None,\n        file_extension: Optional[str] = None,  # Deprecated -- use stream_info\n        url: Optional[str] = None,  # Deprecated -- use stream_info\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        # If there is a content-type header, get the mimetype and charset (if present)\n        mimetype: Optional[str] = None\n        charset: Optional[str] = None\n\n        if \"content-type\" in response.headers:\n            parts = response.headers[\"content-type\"].split(\";\")\n            mimetype = parts.pop(0).strip()\n            for part in parts:\n                if part.strip().startswith(\"charset=\"):\n                    _charset = part.split(\"=\")[1].strip()\n                    if len(_charset) > 0:\n                        charset = _charset\n\n        # If there is a content-disposition header, get the filename and possibly the extension\n        filename: Optional[str] = None\n        extension: Optional[str] = None\n        if \"content-disposition\" in response.headers:\n            m = re.search(r\"filename=([^;]+)\", response.headers[\"content-disposition\"])\n            if m:\n                filename = m.group(1).strip(\"\\\"'\")\n                _, _extension = os.path.splitext(filename)\n                if len(_extension) > 0:\n                    extension = _extension\n\n        # If there is still no filename, try to read it from the url\n        if filename is None:\n            parsed_url = urlparse(response.url)\n            _, _extension = os.path.splitext(parsed_url.path)\n            if len(_extension) > 0:  # Looks like this might be a file!\n                filename = os.path.basename(parsed_url.path)\n                extension = _extension\n\n        # Create an initial guess from all this information\n        base_guess = StreamInfo(\n            mimetype=mimetype,\n            charset=charset,\n            filename=filename,\n            extension=extension,\n            url=response.url,\n        )\n\n        # Update with any additional info from the arguments\n        if stream_info is not None:\n            base_guess = base_guess.copy_and_update(stream_info)\n        if file_extension is not None:\n            # Deprecated -- use stream_info\n            base_guess = base_guess.copy_and_update(extension=file_extension)\n        if url is not None:\n            # Deprecated -- use stream_info\n            base_guess = base_guess.copy_and_update(url=url)\n\n        # Read into BytesIO\n        buffer = io.BytesIO()\n        for chunk in response.iter_content(chunk_size=512):\n            buffer.write(chunk)\n        buffer.seek(0)\n\n        # Convert\n        guesses = self._get_stream_info_guesses(\n            file_stream=buffer, base_guess=base_guess\n        )\n        return self._convert(file_stream=buffer, stream_info_guesses=guesses, **kwargs)\n\n    def _convert(\n        self, *, file_stream: BinaryIO, stream_info_guesses: List[StreamInfo], **kwargs\n    ) -> DocumentConverterResult:\n        res: Union[None, DocumentConverterResult] = None\n\n        # Keep track of which converters throw exceptions\n        failed_attempts: List[FailedConversionAttempt] = []\n\n        # Create a copy of the page_converters list, sorted by priority.\n        # We do this with each call to _convert because the priority of converters may change between calls.\n        # The sort is guaranteed to be stable, so converters with the same priority will remain in the same order.\n        sorted_registrations = sorted(self._converters, key=lambda x: x.priority)\n\n        # Remember the initial stream position so that we can return to it\n        cur_pos = file_stream.tell()\n\n        for stream_info in stream_info_guesses + [StreamInfo()]:\n            for converter_registration in sorted_registrations:\n                converter = converter_registration.converter\n                # Sanity check -- make sure the cur_pos is still the same\n                assert (\n                    cur_pos == file_stream.tell()\n                ), \"File stream position should NOT change between guess iterations\"\n\n                _kwargs = {k: v for k, v in kwargs.items()}\n\n                # Copy any additional global options\n                if \"llm_client\" not in _kwargs and self._llm_client is not None:\n                    _kwargs[\"llm_client\"] = self._llm_client\n\n                if \"llm_model\" not in _kwargs and self._llm_model is not None:\n                    _kwargs[\"llm_model\"] = self._llm_model\n\n                if \"llm_prompt\" not in _kwargs and self._llm_prompt is not None:\n                    _kwargs[\"llm_prompt\"] = self._llm_prompt\n\n                if \"style_map\" not in _kwargs and self._style_map is not None:\n                    _kwargs[\"style_map\"] = self._style_map\n\n                if \"exiftool_path\" not in _kwargs and self._exiftool_path is not None:\n                    _kwargs[\"exiftool_path\"] = self._exiftool_path\n\n                # Add the list of converters for nested processing\n                _kwargs[\"_parent_converters\"] = self._converters\n\n                # Add legaxy kwargs\n                if stream_info is not None:\n                    if stream_info.extension is not None:\n                        _kwargs[\"file_extension\"] = stream_info.extension\n\n                    if stream_info.url is not None:\n                        _kwargs[\"url\"] = stream_info.url\n\n                # Check if the converter will accept the file, and if so, try to convert it\n                _accepts = False\n                try:\n                    _accepts = converter.accepts(file_stream, stream_info, **_kwargs)\n                except NotImplementedError:\n                    pass\n\n                # accept() should not have changed the file stream position\n                assert (\n                    cur_pos == file_stream.tell()\n                ), f\"{type(converter).__name__}.accept() should NOT change the file_stream position\"\n\n                # Attempt the conversion\n                if _accepts:\n                    try:\n                        res = converter.convert(file_stream, stream_info, **_kwargs)\n                    except Exception:\n                        failed_attempts.append(\n                            FailedConversionAttempt(\n                                converter=converter, exc_info=sys.exc_info()\n                            )\n                        )\n                    finally:\n                        file_stream.seek(cur_pos)\n\n                if res is not None:\n                    # Normalize the content\n                    res.text_content = \"\\n\".join(\n                        [line.rstrip() for line in re.split(r\"\\r?\\n\", res.text_content)]\n                    )\n                    res.text_content = re.sub(r\"\\n{3,}\", \"\\n\\n\", res.text_content)\n                    return res\n\n        # If we got this far without success, report any exceptions\n        if len(failed_attempts) > 0:\n            raise FileConversionException(attempts=failed_attempts)\n\n        # Nothing can handle it!\n        raise UnsupportedFormatException(\n            \"Could not convert stream to Markdown. No converter attempted a conversion, suggesting that the filetype is simply not supported.\"\n        )\n\n    def register_page_converter(self, converter: DocumentConverter) -> None:\n        \"\"\"DEPRECATED: User register_converter instead.\"\"\"\n        warn(\n            \"register_page_converter is deprecated. Use register_converter instead.\",\n            DeprecationWarning,\n        )\n        self.register_converter(converter)\n\n    def register_converter(\n        self,\n        converter: DocumentConverter,\n        *,\n        priority: float = PRIORITY_SPECIFIC_FILE_FORMAT,\n    ) -> None:\n        \"\"\"\n        Register a DocumentConverter with a given priority.\n\n        Priorities work as follows: By default, most converters get priority\n        DocumentConverter.PRIORITY_SPECIFIC_FILE_FORMAT (== 0). The exception\n        is the PlainTextConverter, HtmlConverter, and ZipConverter, which get\n        priority PRIORITY_SPECIFIC_FILE_FORMAT (== 10), with lower values\n        being tried first (i.e., higher priority).\n\n        Just prior to conversion, the converters are sorted by priority, using\n        a stable sort. This means that converters with the same priority will\n        remain in the same order, with the most recently registered converters\n        appearing first.\n\n        We have tight control over the order of built-in converters, but\n        plugins can register converters in any order. The registration's priority\n        field reasserts some control over the order of converters.\n\n        Plugins can register converters with any priority, to appear before or\n        after the built-ins. For example, a plugin with priority 9 will run\n        before the PlainTextConverter, but after the built-in converters.\n        \"\"\"\n        self._converters.insert(\n            0, ConverterRegistration(converter=converter, priority=priority)\n        )\n\n    def _get_stream_info_guesses(\n        self, file_stream: BinaryIO, base_guess: StreamInfo\n    ) -> List[StreamInfo]:\n        \"\"\"\n        Given a base guess, attempt to guess or expand on the stream info using the stream content (via magika).\n        \"\"\"\n        guesses: List[StreamInfo] = []\n\n        # Enhance the base guess with information based on the extension or mimetype\n        enhanced_guess = base_guess.copy_and_update()\n\n        # If there's an extension and no mimetype, try to guess the mimetype\n        if base_guess.mimetype is None and base_guess.extension is not None:\n            _m, _ = mimetypes.guess_type(\n                \"placeholder\" + base_guess.extension, strict=False\n            )\n            if _m is not None:\n                enhanced_guess = enhanced_guess.copy_and_update(mimetype=_m)\n\n        # If there's a mimetype and no extension, try to guess the extension\n        if base_guess.mimetype is not None and base_guess.extension is None:\n            _e = mimetypes.guess_all_extensions(base_guess.mimetype, strict=False)\n            if len(_e) > 0:\n                enhanced_guess = enhanced_guess.copy_and_update(extension=_e[0])\n\n        # Call magika to guess from the stream\n        cur_pos = file_stream.tell()\n        try:\n            result = self._magika.identify_stream(file_stream)\n            if result.status == \"ok\" and result.prediction.output.label != \"unknown\":\n                # If it's text, also guess the charset\n                charset = None\n                if result.prediction.output.is_text:\n                    # Read the first 4k to guess the charset\n                    file_stream.seek(cur_pos)\n                    stream_page = file_stream.read(4096)\n                    charset_result = charset_normalizer.from_bytes(stream_page).best()\n\n                    if charset_result is not None:\n                        charset = self._normalize_charset(charset_result.encoding)\n\n                # Normalize the first extension listed\n                guessed_extension = None\n                if len(result.prediction.output.extensions) > 0:\n                    guessed_extension = \".\" + result.prediction.output.extensions[0]\n\n                # Determine if the guess is compatible with the base guess\n                compatible = True\n                if (\n                    base_guess.mimetype is not None\n                    and base_guess.mimetype != result.prediction.output.mime_type\n                ):\n                    compatible = False\n\n                if (\n                    base_guess.extension is not None\n                    and base_guess.extension.lstrip(\".\")\n                    not in result.prediction.output.extensions\n                ):\n                    compatible = False\n\n                if (\n                    base_guess.charset is not None\n                    and self._normalize_charset(base_guess.charset) != charset\n                ):\n                    compatible = False\n\n                if compatible:\n                    # Add the compatible base guess\n                    guesses.append(\n                        StreamInfo(\n                            mimetype=base_guess.mimetype\n                            or result.prediction.output.mime_type,\n                            extension=base_guess.extension or guessed_extension,\n                            charset=base_guess.charset or charset,\n                            filename=base_guess.filename,\n                            local_path=base_guess.local_path,\n                            url=base_guess.url,\n                        )\n                    )\n                else:\n                    # The magika guess was incompatible with the base guess, so add both guesses\n                    guesses.append(enhanced_guess)\n                    guesses.append(\n                        StreamInfo(\n                            mimetype=result.prediction.output.mime_type,\n                            extension=guessed_extension,\n                            charset=charset,\n                            filename=base_guess.filename,\n                            local_path=base_guess.local_path,\n                            url=base_guess.url,\n                        )\n                    )\n            else:\n                # There were no other guesses, so just add the base guess\n                guesses.append(enhanced_guess)\n        finally:\n            file_stream.seek(cur_pos)\n\n        return guesses\n\n    def _normalize_charset(self, charset: str | None) -> str | None:\n        \"\"\"\n        Normalize a charset string to a canonical form.\n        \"\"\"\n        if charset is None:\n            return None\n        try:\n            return codecs.lookup(charset).name\n        except LookupError:\n            return charset\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/_stream_info.py",
    "content": "from dataclasses import dataclass, asdict\nfrom typing import Optional\n\n\n@dataclass(kw_only=True, frozen=True)\nclass StreamInfo:\n    \"\"\"The StreamInfo class is used to store information about a file stream.\n    All fields can be None, and will depend on how the stream was opened.\n    \"\"\"\n\n    mimetype: Optional[str] = None\n    extension: Optional[str] = None\n    charset: Optional[str] = None\n    filename: Optional[\n        str\n    ] = None  # From local path, url, or Content-Disposition header\n    local_path: Optional[str] = None  # If read from disk\n    url: Optional[str] = None  # If read from url\n\n    def copy_and_update(self, *args, **kwargs):\n        \"\"\"Copy the StreamInfo object and update it with the given StreamInfo\n        instance and/or other keyword arguments.\"\"\"\n        new_info = asdict(self)\n\n        for si in args:\n            assert isinstance(si, StreamInfo)\n            new_info.update({k: v for k, v in asdict(si).items() if v is not None})\n\n        if len(kwargs) > 0:\n            new_info.update(kwargs)\n\n        return StreamInfo(**new_info)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/_uri_utils.py",
    "content": "import base64\nimport os\nfrom typing import Tuple, Dict\nfrom urllib.request import url2pathname\nfrom urllib.parse import urlparse, unquote_to_bytes\n\n\ndef file_uri_to_path(file_uri: str) -> Tuple[str | None, str]:\n    \"\"\"Convert a file URI to a local file path\"\"\"\n    parsed = urlparse(file_uri)\n    if parsed.scheme != \"file\":\n        raise ValueError(f\"Not a file URL: {file_uri}\")\n\n    netloc = parsed.netloc if parsed.netloc else None\n    path = os.path.abspath(url2pathname(parsed.path))\n    return netloc, path\n\n\ndef parse_data_uri(uri: str) -> Tuple[str | None, Dict[str, str], bytes]:\n    if not uri.startswith(\"data:\"):\n        raise ValueError(\"Not a data URI\")\n\n    header, _, data = uri.partition(\",\")\n    if not _:\n        raise ValueError(\"Malformed data URI, missing ',' separator\")\n\n    meta = header[5:]  # Strip 'data:'\n    parts = meta.split(\";\")\n\n    is_base64 = False\n    # Ends with base64?\n    if parts[-1] == \"base64\":\n        parts.pop()\n        is_base64 = True\n\n    mime_type = None  # Normally this would default to text/plain but we won't assume\n    if len(parts) and len(parts[0]) > 0:\n        # First part is the mime type\n        mime_type = parts.pop(0)\n\n    attributes: Dict[str, str] = {}\n    for part in parts:\n        # Handle key=value pairs in the middle\n        if \"=\" in part:\n            key, value = part.split(\"=\", 1)\n            attributes[key] = value\n        elif len(part) > 0:\n            attributes[part] = \"\"\n\n    content = base64.b64decode(data) if is_base64 else unquote_to_bytes(data)\n\n    return mime_type, attributes, content\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/__init__.py",
    "content": ""
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/docx/__init__.py",
    "content": ""
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/docx/math/__init__.py",
    "content": ""
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/docx/math/latex_dict.py",
    "content": "# -*- coding: utf-8 -*-\n\n\"\"\"\nAdapted from https://github.com/xiilei/dwml/blob/master/dwml/latex_dict.py\nOn 25/03/2025\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nCHARS = (\"{\", \"}\", \"_\", \"^\", \"#\", \"&\", \"$\", \"%\", \"~\")\n\nBLANK = \"\"\nBACKSLASH = \"\\\\\"\nALN = \"&\"\n\nCHR = {\n    # Unicode : Latex Math Symbols\n    # Top accents\n    \"\\u0300\": \"\\\\grave{{{0}}}\",\n    \"\\u0301\": \"\\\\acute{{{0}}}\",\n    \"\\u0302\": \"\\\\hat{{{0}}}\",\n    \"\\u0303\": \"\\\\tilde{{{0}}}\",\n    \"\\u0304\": \"\\\\bar{{{0}}}\",\n    \"\\u0305\": \"\\\\overbar{{{0}}}\",\n    \"\\u0306\": \"\\\\breve{{{0}}}\",\n    \"\\u0307\": \"\\\\dot{{{0}}}\",\n    \"\\u0308\": \"\\\\ddot{{{0}}}\",\n    \"\\u0309\": \"\\\\ovhook{{{0}}}\",\n    \"\\u030a\": \"\\\\ocirc{{{0}}}}\",\n    \"\\u030c\": \"\\\\check{{{0}}}}\",\n    \"\\u0310\": \"\\\\candra{{{0}}}\",\n    \"\\u0312\": \"\\\\oturnedcomma{{{0}}}\",\n    \"\\u0315\": \"\\\\ocommatopright{{{0}}}\",\n    \"\\u031a\": \"\\\\droang{{{0}}}\",\n    \"\\u0338\": \"\\\\not{{{0}}}\",\n    \"\\u20d0\": \"\\\\leftharpoonaccent{{{0}}}\",\n    \"\\u20d1\": \"\\\\rightharpoonaccent{{{0}}}\",\n    \"\\u20d2\": \"\\\\vertoverlay{{{0}}}\",\n    \"\\u20d6\": \"\\\\overleftarrow{{{0}}}\",\n    \"\\u20d7\": \"\\\\vec{{{0}}}\",\n    \"\\u20db\": \"\\\\dddot{{{0}}}\",\n    \"\\u20dc\": \"\\\\ddddot{{{0}}}\",\n    \"\\u20e1\": \"\\\\overleftrightarrow{{{0}}}\",\n    \"\\u20e7\": \"\\\\annuity{{{0}}}\",\n    \"\\u20e9\": \"\\\\widebridgeabove{{{0}}}\",\n    \"\\u20f0\": \"\\\\asteraccent{{{0}}}\",\n    # Bottom accents\n    \"\\u0330\": \"\\\\wideutilde{{{0}}}\",\n    \"\\u0331\": \"\\\\underbar{{{0}}}\",\n    \"\\u20e8\": \"\\\\threeunderdot{{{0}}}\",\n    \"\\u20ec\": \"\\\\underrightharpoondown{{{0}}}\",\n    \"\\u20ed\": \"\\\\underleftharpoondown{{{0}}}\",\n    \"\\u20ee\": \"\\\\underledtarrow{{{0}}}\",\n    \"\\u20ef\": \"\\\\underrightarrow{{{0}}}\",\n    # Over | group\n    \"\\u23b4\": \"\\\\overbracket{{{0}}}\",\n    \"\\u23dc\": \"\\\\overparen{{{0}}}\",\n    \"\\u23de\": \"\\\\overbrace{{{0}}}\",\n    # Under| group\n    \"\\u23b5\": \"\\\\underbracket{{{0}}}\",\n    \"\\u23dd\": \"\\\\underparen{{{0}}}\",\n    \"\\u23df\": \"\\\\underbrace{{{0}}}\",\n}\n\nCHR_BO = {\n    # Big operators,\n    \"\\u2140\": \"\\\\Bbbsum\",\n    \"\\u220f\": \"\\\\prod\",\n    \"\\u2210\": \"\\\\coprod\",\n    \"\\u2211\": \"\\\\sum\",\n    \"\\u222b\": \"\\\\int\",\n    \"\\u22c0\": \"\\\\bigwedge\",\n    \"\\u22c1\": \"\\\\bigvee\",\n    \"\\u22c2\": \"\\\\bigcap\",\n    \"\\u22c3\": \"\\\\bigcup\",\n    \"\\u2a00\": \"\\\\bigodot\",\n    \"\\u2a01\": \"\\\\bigoplus\",\n    \"\\u2a02\": \"\\\\bigotimes\",\n}\n\nT = {\n    \"\\u2192\": \"\\\\rightarrow \",\n    # Greek letters\n    \"\\U0001d6fc\": \"\\\\alpha \",\n    \"\\U0001d6fd\": \"\\\\beta \",\n    \"\\U0001d6fe\": \"\\\\gamma \",\n    \"\\U0001d6ff\": \"\\\\theta \",\n    \"\\U0001d700\": \"\\\\epsilon \",\n    \"\\U0001d701\": \"\\\\zeta \",\n    \"\\U0001d702\": \"\\\\eta \",\n    \"\\U0001d703\": \"\\\\theta \",\n    \"\\U0001d704\": \"\\\\iota \",\n    \"\\U0001d705\": \"\\\\kappa \",\n    \"\\U0001d706\": \"\\\\lambda \",\n    \"\\U0001d707\": \"\\\\m \",\n    \"\\U0001d708\": \"\\\\n \",\n    \"\\U0001d709\": \"\\\\xi \",\n    \"\\U0001d70a\": \"\\\\omicron \",\n    \"\\U0001d70b\": \"\\\\pi \",\n    \"\\U0001d70c\": \"\\\\rho \",\n    \"\\U0001d70d\": \"\\\\varsigma \",\n    \"\\U0001d70e\": \"\\\\sigma \",\n    \"\\U0001d70f\": \"\\\\ta \",\n    \"\\U0001d710\": \"\\\\upsilon \",\n    \"\\U0001d711\": \"\\\\phi \",\n    \"\\U0001d712\": \"\\\\chi \",\n    \"\\U0001d713\": \"\\\\psi \",\n    \"\\U0001d714\": \"\\\\omega \",\n    \"\\U0001d715\": \"\\\\partial \",\n    \"\\U0001d716\": \"\\\\varepsilon \",\n    \"\\U0001d717\": \"\\\\vartheta \",\n    \"\\U0001d718\": \"\\\\varkappa \",\n    \"\\U0001d719\": \"\\\\varphi \",\n    \"\\U0001d71a\": \"\\\\varrho \",\n    \"\\U0001d71b\": \"\\\\varpi \",\n    # Relation symbols\n    \"\\u2190\": \"\\\\leftarrow \",\n    \"\\u2191\": \"\\\\uparrow \",\n    \"\\u2192\": \"\\\\rightarrow \",\n    \"\\u2193\": \"\\\\downright \",\n    \"\\u2194\": \"\\\\leftrightarrow \",\n    \"\\u2195\": \"\\\\updownarrow \",\n    \"\\u2196\": \"\\\\nwarrow \",\n    \"\\u2197\": \"\\\\nearrow \",\n    \"\\u2198\": \"\\\\searrow \",\n    \"\\u2199\": \"\\\\swarrow \",\n    \"\\u22ee\": \"\\\\vdots \",\n    \"\\u22ef\": \"\\\\cdots \",\n    \"\\u22f0\": \"\\\\adots \",\n    \"\\u22f1\": \"\\\\ddots \",\n    \"\\u2260\": \"\\\\ne \",\n    \"\\u2264\": \"\\\\leq \",\n    \"\\u2265\": \"\\\\geq \",\n    \"\\u2266\": \"\\\\leqq \",\n    \"\\u2267\": \"\\\\geqq \",\n    \"\\u2268\": \"\\\\lneqq \",\n    \"\\u2269\": \"\\\\gneqq \",\n    \"\\u226a\": \"\\\\ll \",\n    \"\\u226b\": \"\\\\gg \",\n    \"\\u2208\": \"\\\\in \",\n    \"\\u2209\": \"\\\\notin \",\n    \"\\u220b\": \"\\\\ni \",\n    \"\\u220c\": \"\\\\nni \",\n    # Ordinary symbols\n    \"\\u221e\": \"\\\\infty \",\n    # Binary relations\n    \"\\u00b1\": \"\\\\pm \",\n    \"\\u2213\": \"\\\\mp \",\n    # Italic, Latin, uppercase\n    \"\\U0001d434\": \"A\",\n    \"\\U0001d435\": \"B\",\n    \"\\U0001d436\": \"C\",\n    \"\\U0001d437\": \"D\",\n    \"\\U0001d438\": \"E\",\n    \"\\U0001d439\": \"F\",\n    \"\\U0001d43a\": \"G\",\n    \"\\U0001d43b\": \"H\",\n    \"\\U0001d43c\": \"I\",\n    \"\\U0001d43d\": \"J\",\n    \"\\U0001d43e\": \"K\",\n    \"\\U0001d43f\": \"L\",\n    \"\\U0001d440\": \"M\",\n    \"\\U0001d441\": \"N\",\n    \"\\U0001d442\": \"O\",\n    \"\\U0001d443\": \"P\",\n    \"\\U0001d444\": \"Q\",\n    \"\\U0001d445\": \"R\",\n    \"\\U0001d446\": \"S\",\n    \"\\U0001d447\": \"T\",\n    \"\\U0001d448\": \"U\",\n    \"\\U0001d449\": \"V\",\n    \"\\U0001d44a\": \"W\",\n    \"\\U0001d44b\": \"X\",\n    \"\\U0001d44c\": \"Y\",\n    \"\\U0001d44d\": \"Z\",\n    # Italic, Latin, lowercase\n    \"\\U0001d44e\": \"a\",\n    \"\\U0001d44f\": \"b\",\n    \"\\U0001d450\": \"c\",\n    \"\\U0001d451\": \"d\",\n    \"\\U0001d452\": \"e\",\n    \"\\U0001d453\": \"f\",\n    \"\\U0001d454\": \"g\",\n    \"\\U0001d456\": \"i\",\n    \"\\U0001d457\": \"j\",\n    \"\\U0001d458\": \"k\",\n    \"\\U0001d459\": \"l\",\n    \"\\U0001d45a\": \"m\",\n    \"\\U0001d45b\": \"n\",\n    \"\\U0001d45c\": \"o\",\n    \"\\U0001d45d\": \"p\",\n    \"\\U0001d45e\": \"q\",\n    \"\\U0001d45f\": \"r\",\n    \"\\U0001d460\": \"s\",\n    \"\\U0001d461\": \"t\",\n    \"\\U0001d462\": \"u\",\n    \"\\U0001d463\": \"v\",\n    \"\\U0001d464\": \"w\",\n    \"\\U0001d465\": \"x\",\n    \"\\U0001d466\": \"y\",\n    \"\\U0001d467\": \"z\",\n}\n\nFUNC = {\n    \"sin\": \"\\\\sin({fe})\",\n    \"cos\": \"\\\\cos({fe})\",\n    \"tan\": \"\\\\tan({fe})\",\n    \"arcsin\": \"\\\\arcsin({fe})\",\n    \"arccos\": \"\\\\arccos({fe})\",\n    \"arctan\": \"\\\\arctan({fe})\",\n    \"arccot\": \"\\\\arccot({fe})\",\n    \"sinh\": \"\\\\sinh({fe})\",\n    \"cosh\": \"\\\\cosh({fe})\",\n    \"tanh\": \"\\\\tanh({fe})\",\n    \"coth\": \"\\\\coth({fe})\",\n    \"sec\": \"\\\\sec({fe})\",\n    \"csc\": \"\\\\csc({fe})\",\n}\n\nFUNC_PLACE = \"{fe}\"\n\nBRK = \"\\\\\\\\\"\n\nCHR_DEFAULT = {\n    \"ACC_VAL\": \"\\\\hat{{{0}}}\",\n}\n\nPOS = {\n    \"top\": \"\\\\overline{{{0}}}\",  # not sure\n    \"bot\": \"\\\\underline{{{0}}}\",\n}\n\nPOS_DEFAULT = {\n    \"BAR_VAL\": \"\\\\overline{{{0}}}\",\n}\n\nSUB = \"_{{{0}}}\"\n\nSUP = \"^{{{0}}}\"\n\nF = {\n    \"bar\": \"\\\\frac{{{num}}}{{{den}}}\",\n    \"skw\": r\"^{{{num}}}/_{{{den}}}\",\n    \"noBar\": \"\\\\genfrac{{}}{{}}{{0pt}}{{}}{{{num}}}{{{den}}}\",\n    \"lin\": \"{{{num}}}/{{{den}}}\",\n}\nF_DEFAULT = \"\\\\frac{{{num}}}{{{den}}}\"\n\nD = \"\\\\left{left}{text}\\\\right{right}\"\n\nD_DEFAULT = {\n    \"left\": \"(\",\n    \"right\": \")\",\n    \"null\": \".\",\n}\n\nRAD = \"\\\\sqrt[{deg}]{{{text}}}\"\n\nRAD_DEFAULT = \"\\\\sqrt{{{text}}}\"\n\nARR = \"\\\\begin{{array}}{{c}}{text}\\\\end{{array}}\"\n\nLIM_FUNC = {\n    \"lim\": \"\\\\lim_{{{lim}}}\",\n    \"max\": \"\\\\max_{{{lim}}}\",\n    \"min\": \"\\\\min_{{{lim}}}\",\n}\n\nLIM_TO = (\"\\\\rightarrow\", \"\\\\to\")\n\nLIM_UPP = \"\\\\overset{{{lim}}}{{{text}}}\"\n\nM = \"\\\\begin{{matrix}}{text}\\\\end{{matrix}}\"\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/docx/math/omml.py",
    "content": "# -*- coding: utf-8 -*-\n\n\"\"\"\nOffice Math Markup Language (OMML)\nAdapted from https://github.com/xiilei/dwml/blob/master/dwml/omml.py\nOn 25/03/2025\n\"\"\"\n\nfrom defusedxml import ElementTree as ET\n\nfrom .latex_dict import (\n    CHARS,\n    CHR,\n    CHR_BO,\n    CHR_DEFAULT,\n    POS,\n    POS_DEFAULT,\n    SUB,\n    SUP,\n    F,\n    F_DEFAULT,\n    T,\n    FUNC,\n    D,\n    D_DEFAULT,\n    RAD,\n    RAD_DEFAULT,\n    ARR,\n    LIM_FUNC,\n    LIM_TO,\n    LIM_UPP,\n    M,\n    BRK,\n    BLANK,\n    BACKSLASH,\n    ALN,\n    FUNC_PLACE,\n)\n\nOMML_NS = \"{http://schemas.openxmlformats.org/officeDocument/2006/math}\"\n\n\ndef load(stream):\n    tree = ET.parse(stream)\n    for omath in tree.findall(OMML_NS + \"oMath\"):\n        yield oMath2Latex(omath)\n\n\ndef load_string(string):\n    root = ET.fromstring(string)\n    for omath in root.findall(OMML_NS + \"oMath\"):\n        yield oMath2Latex(omath)\n\n\ndef escape_latex(strs):\n    last = None\n    new_chr = []\n    strs = strs.replace(r\"\\\\\", \"\\\\\")\n    for c in strs:\n        if (c in CHARS) and (last != BACKSLASH):\n            new_chr.append(BACKSLASH + c)\n        else:\n            new_chr.append(c)\n        last = c\n    return BLANK.join(new_chr)\n\n\ndef get_val(key, default=None, store=CHR):\n    if key is not None:\n        return key if not store else store.get(key, key)\n    else:\n        return default\n\n\nclass Tag2Method(object):\n    def call_method(self, elm, stag=None):\n        getmethod = self.tag2meth.get\n        if stag is None:\n            stag = elm.tag.replace(OMML_NS, \"\")\n        method = getmethod(stag)\n        if method:\n            return method(self, elm)\n        else:\n            return None\n\n    def process_children_list(self, elm, include=None):\n        \"\"\"\n        process children of the elm,return iterable\n        \"\"\"\n        for _e in list(elm):\n            if OMML_NS not in _e.tag:\n                continue\n            stag = _e.tag.replace(OMML_NS, \"\")\n            if include and (stag not in include):\n                continue\n            t = self.call_method(_e, stag=stag)\n            if t is None:\n                t = self.process_unknow(_e, stag)\n                if t is None:\n                    continue\n            yield (stag, t, _e)\n\n    def process_children_dict(self, elm, include=None):\n        \"\"\"\n        process children of the elm,return dict\n        \"\"\"\n        latex_chars = dict()\n        for stag, t, e in self.process_children_list(elm, include):\n            latex_chars[stag] = t\n        return latex_chars\n\n    def process_children(self, elm, include=None):\n        \"\"\"\n        process children of the elm,return string\n        \"\"\"\n        return BLANK.join(\n            (\n                t if not isinstance(t, Tag2Method) else str(t)\n                for stag, t, e in self.process_children_list(elm, include)\n            )\n        )\n\n    def process_unknow(self, elm, stag):\n        return None\n\n\nclass Pr(Tag2Method):\n    text = \"\"\n\n    __val_tags = (\"chr\", \"pos\", \"begChr\", \"endChr\", \"type\")\n\n    __innerdict = None  # can't use the __dict__\n\n    \"\"\" common properties of element\"\"\"\n\n    def __init__(self, elm):\n        self.__innerdict = {}\n        self.text = self.process_children(elm)\n\n    def __str__(self):\n        return self.text\n\n    def __unicode__(self):\n        return self.__str__(self)\n\n    def __getattr__(self, name):\n        return self.__innerdict.get(name, None)\n\n    def do_brk(self, elm):\n        self.__innerdict[\"brk\"] = BRK\n        return BRK\n\n    def do_common(self, elm):\n        stag = elm.tag.replace(OMML_NS, \"\")\n        if stag in self.__val_tags:\n            t = elm.get(\"{0}val\".format(OMML_NS))\n            self.__innerdict[stag] = t\n        return None\n\n    tag2meth = {\n        \"brk\": do_brk,\n        \"chr\": do_common,\n        \"pos\": do_common,\n        \"begChr\": do_common,\n        \"endChr\": do_common,\n        \"type\": do_common,\n    }\n\n\nclass oMath2Latex(Tag2Method):\n    \"\"\"\n    Convert oMath element of omml to latex\n    \"\"\"\n\n    _t_dict = T\n\n    __direct_tags = (\"box\", \"sSub\", \"sSup\", \"sSubSup\", \"num\", \"den\", \"deg\", \"e\")\n\n    def __init__(self, element):\n        self._latex = self.process_children(element)\n\n    def __str__(self):\n        return self.latex\n\n    def __unicode__(self):\n        return self.__str__(self)\n\n    def process_unknow(self, elm, stag):\n        if stag in self.__direct_tags:\n            return self.process_children(elm)\n        elif stag[-2:] == \"Pr\":\n            return Pr(elm)\n        else:\n            return None\n\n    @property\n    def latex(self):\n        return self._latex\n\n    def do_acc(self, elm):\n        \"\"\"\n        the accent function\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        latex_s = get_val(\n            c_dict[\"accPr\"].chr, default=CHR_DEFAULT.get(\"ACC_VAL\"), store=CHR\n        )\n        return latex_s.format(c_dict[\"e\"])\n\n    def do_bar(self, elm):\n        \"\"\"\n        the bar function\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        pr = c_dict[\"barPr\"]\n        latex_s = get_val(pr.pos, default=POS_DEFAULT.get(\"BAR_VAL\"), store=POS)\n        return pr.text + latex_s.format(c_dict[\"e\"])\n\n    def do_d(self, elm):\n        \"\"\"\n        the delimiter object\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        pr = c_dict[\"dPr\"]\n        null = D_DEFAULT.get(\"null\")\n        s_val = get_val(pr.begChr, default=D_DEFAULT.get(\"left\"), store=T)\n        e_val = get_val(pr.endChr, default=D_DEFAULT.get(\"right\"), store=T)\n        return pr.text + D.format(\n            left=null if not s_val else escape_latex(s_val),\n            text=c_dict[\"e\"],\n            right=null if not e_val else escape_latex(e_val),\n        )\n\n    def do_spre(self, elm):\n        \"\"\"\n        the Pre-Sub-Superscript object -- Not support yet\n        \"\"\"\n        pass\n\n    def do_sub(self, elm):\n        text = self.process_children(elm)\n        return SUB.format(text)\n\n    def do_sup(self, elm):\n        text = self.process_children(elm)\n        return SUP.format(text)\n\n    def do_f(self, elm):\n        \"\"\"\n        the fraction object\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        pr = c_dict[\"fPr\"]\n        latex_s = get_val(pr.type, default=F_DEFAULT, store=F)\n        return pr.text + latex_s.format(num=c_dict.get(\"num\"), den=c_dict.get(\"den\"))\n\n    def do_func(self, elm):\n        \"\"\"\n        the Function-Apply object (Examples:sin cos)\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        func_name = c_dict.get(\"fName\")\n        return func_name.replace(FUNC_PLACE, c_dict.get(\"e\"))\n\n    def do_fname(self, elm):\n        \"\"\"\n        the func name\n        \"\"\"\n        latex_chars = []\n        for stag, t, e in self.process_children_list(elm):\n            if stag == \"r\":\n                if FUNC.get(t):\n                    latex_chars.append(FUNC[t])\n                else:\n                    raise NotImplementedError(\"Not support func %s\" % t)\n            else:\n                latex_chars.append(t)\n        t = BLANK.join(latex_chars)\n        return t if FUNC_PLACE in t else t + FUNC_PLACE  # do_func will replace this\n\n    def do_groupchr(self, elm):\n        \"\"\"\n        the Group-Character object\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        pr = c_dict[\"groupChrPr\"]\n        latex_s = get_val(pr.chr)\n        return pr.text + latex_s.format(c_dict[\"e\"])\n\n    def do_rad(self, elm):\n        \"\"\"\n        the radical object\n        \"\"\"\n        c_dict = self.process_children_dict(elm)\n        text = c_dict.get(\"e\")\n        deg_text = c_dict.get(\"deg\")\n        if deg_text:\n            return RAD.format(deg=deg_text, text=text)\n        else:\n            return RAD_DEFAULT.format(text=text)\n\n    def do_eqarr(self, elm):\n        \"\"\"\n        the Array object\n        \"\"\"\n        return ARR.format(\n            text=BRK.join(\n                [t for stag, t, e in self.process_children_list(elm, include=(\"e\",))]\n            )\n        )\n\n    def do_limlow(self, elm):\n        \"\"\"\n        the Lower-Limit object\n        \"\"\"\n        t_dict = self.process_children_dict(elm, include=(\"e\", \"lim\"))\n        latex_s = LIM_FUNC.get(t_dict[\"e\"])\n        if not latex_s:\n            raise NotImplementedError(\"Not support lim %s\" % t_dict[\"e\"])\n        else:\n            return latex_s.format(lim=t_dict.get(\"lim\"))\n\n    def do_limupp(self, elm):\n        \"\"\"\n        the Upper-Limit object\n        \"\"\"\n        t_dict = self.process_children_dict(elm, include=(\"e\", \"lim\"))\n        return LIM_UPP.format(lim=t_dict.get(\"lim\"), text=t_dict.get(\"e\"))\n\n    def do_lim(self, elm):\n        \"\"\"\n        the lower limit of the limLow object and the upper limit of the limUpp function\n        \"\"\"\n        return self.process_children(elm).replace(LIM_TO[0], LIM_TO[1])\n\n    def do_m(self, elm):\n        \"\"\"\n        the Matrix object\n        \"\"\"\n        rows = []\n        for stag, t, e in self.process_children_list(elm):\n            if stag == \"mPr\":\n                pass\n            elif stag == \"mr\":\n                rows.append(t)\n        return M.format(text=BRK.join(rows))\n\n    def do_mr(self, elm):\n        \"\"\"\n        a single row of the matrix m\n        \"\"\"\n        return ALN.join(\n            [t for stag, t, e in self.process_children_list(elm, include=(\"e\",))]\n        )\n\n    def do_nary(self, elm):\n        \"\"\"\n        the n-ary object\n        \"\"\"\n        res = []\n        bo = \"\"\n        for stag, t, e in self.process_children_list(elm):\n            if stag == \"naryPr\":\n                bo = get_val(t.chr, store=CHR_BO)\n            else:\n                res.append(t)\n        return bo + BLANK.join(res)\n\n    def do_r(self, elm):\n        \"\"\"\n        Get text from 'r' element,And try convert them to latex symbols\n        @todo text style support , (sty)\n        @todo \\text (latex pure text support)\n        \"\"\"\n        _str = []\n        for s in elm.findtext(\"./{0}t\".format(OMML_NS)):\n            # s = s if isinstance(s,unicode) else unicode(s,'utf-8')\n            _str.append(self._t_dict.get(s, s))\n        return escape_latex(BLANK.join(_str))\n\n    tag2meth = {\n        \"acc\": do_acc,\n        \"r\": do_r,\n        \"bar\": do_bar,\n        \"sub\": do_sub,\n        \"sup\": do_sup,\n        \"f\": do_f,\n        \"func\": do_func,\n        \"fName\": do_fname,\n        \"groupChr\": do_groupchr,\n        \"d\": do_d,\n        \"rad\": do_rad,\n        \"eqArr\": do_eqarr,\n        \"limLow\": do_limlow,\n        \"limUpp\": do_limupp,\n        \"lim\": do_lim,\n        \"m\": do_m,\n        \"mr\": do_mr,\n        \"nary\": do_nary,\n    }\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converter_utils/docx/pre_process.py",
    "content": "import zipfile\nfrom io import BytesIO\nfrom typing import BinaryIO\nfrom xml.etree import ElementTree as ET\n\nfrom bs4 import BeautifulSoup, Tag\n\nfrom .math.omml import OMML_NS, oMath2Latex\n\nMATH_ROOT_TEMPLATE = \"\".join(\n    (\n        \"<w:document \",\n        'xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" ',\n        'xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" ',\n        'xmlns:o=\"urn:schemas-microsoft-com:office:office\" ',\n        'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" ',\n        'xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" ',\n        'xmlns:v=\"urn:schemas-microsoft-com:vml\" ',\n        'xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" ',\n        'xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" ',\n        'xmlns:w10=\"urn:schemas-microsoft-com:office:word\" ',\n        'xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ',\n        'xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" ',\n        'xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" ',\n        'xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" ',\n        'xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" ',\n        'xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" mc:Ignorable=\"w14 wp14\">',\n        \"{0}</w:document>\",\n    )\n)\n\n\ndef _convert_omath_to_latex(tag: Tag) -> str:\n    \"\"\"\n    Converts an OMML (Office Math Markup Language) tag to LaTeX format.\n\n    Args:\n        tag (Tag): A BeautifulSoup Tag object representing the OMML element.\n\n    Returns:\n        str: The LaTeX representation of the OMML element.\n    \"\"\"\n    # Format the tag into a complete XML document string\n    math_root = ET.fromstring(MATH_ROOT_TEMPLATE.format(str(tag)))\n    # Find the 'oMath' element within the XML document\n    math_element = math_root.find(OMML_NS + \"oMath\")\n    # Convert the 'oMath' element to LaTeX using the oMath2Latex function\n    latex = oMath2Latex(math_element).latex\n    return latex\n\n\ndef _get_omath_tag_replacement(tag: Tag, block: bool = False) -> Tag:\n    \"\"\"\n    Creates a replacement tag for an OMML (Office Math Markup Language) element.\n\n    Args:\n        tag (Tag): A BeautifulSoup Tag object representing the \"oMath\" element.\n        block (bool, optional): If True, the LaTeX will be wrapped in double dollar signs for block mode. Defaults to False.\n\n    Returns:\n        Tag: A BeautifulSoup Tag object representing the replacement element.\n    \"\"\"\n    t_tag = Tag(name=\"w:t\")\n    t_tag.string = (\n        f\"$${_convert_omath_to_latex(tag)}$$\"\n        if block\n        else f\"${_convert_omath_to_latex(tag)}$\"\n    )\n    r_tag = Tag(name=\"w:r\")\n    r_tag.append(t_tag)\n    return r_tag\n\n\ndef _replace_equations(tag: Tag):\n    \"\"\"\n    Replaces OMML (Office Math Markup Language) elements with their LaTeX equivalents.\n\n    Args:\n        tag (Tag): A BeautifulSoup Tag object representing the OMML element. Could be either \"oMathPara\" or \"oMath\".\n\n    Raises:\n        ValueError: If the tag is not supported.\n    \"\"\"\n    if tag.name == \"oMathPara\":\n        # Create a new paragraph tag\n        p_tag = Tag(name=\"w:p\")\n        # Replace each 'oMath' child tag with its LaTeX equivalent as block equations\n        for child_tag in tag.find_all(\"oMath\"):\n            p_tag.append(_get_omath_tag_replacement(child_tag, block=True))\n        # Replace the original 'oMathPara' tag with the new paragraph tag\n        tag.replace_with(p_tag)\n    elif tag.name == \"oMath\":\n        # Replace the 'oMath' tag with its LaTeX equivalent as inline equation\n        tag.replace_with(_get_omath_tag_replacement(tag, block=False))\n    else:\n        raise ValueError(f\"Not supported tag: {tag.name}\")\n\n\ndef _pre_process_math(content: bytes) -> bytes:\n    \"\"\"\n    Pre-processes the math content in a DOCX -> XML file by converting OMML (Office Math Markup Language) elements to LaTeX.\n    This preprocessed content can be directly replaced in the DOCX file -> XMLs.\n\n    Args:\n        content (bytes): The XML content of the DOCX file as bytes.\n\n    Returns:\n        bytes: The processed content with OMML elements replaced by their LaTeX equivalents, encoded as bytes.\n    \"\"\"\n    soup = BeautifulSoup(content.decode(), features=\"xml\")\n    for tag in soup.find_all(\"oMathPara\"):\n        _replace_equations(tag)\n    for tag in soup.find_all(\"oMath\"):\n        _replace_equations(tag)\n    return str(soup).encode()\n\n\ndef pre_process_docx(input_docx: BinaryIO) -> BinaryIO:\n    \"\"\"\n    Pre-processes a DOCX file with provided steps.\n\n    The process works by unzipping the DOCX file in memory, transforming specific XML files\n    (such as converting OMML elements to LaTeX), and then zipping everything back into a\n    DOCX file without writing to disk.\n\n    Args:\n        input_docx (BinaryIO): A binary input stream representing the DOCX file.\n\n    Returns:\n        BinaryIO: A binary output stream representing the processed DOCX file.\n    \"\"\"\n    output_docx = BytesIO()\n    # The files that need to be pre-processed from .docx\n    pre_process_enable_files = [\n        \"word/document.xml\",\n        \"word/footnotes.xml\",\n        \"word/endnotes.xml\",\n    ]\n    with zipfile.ZipFile(input_docx, mode=\"r\") as zip_input:\n        files = {name: zip_input.read(name) for name in zip_input.namelist()}\n        with zipfile.ZipFile(output_docx, mode=\"w\") as zip_output:\n            zip_output.comment = zip_input.comment\n            for name, content in files.items():\n                if name in pre_process_enable_files:\n                    try:\n                        # Pre-process the content\n                        updated_content = _pre_process_math(content)\n                        # In the future, if there are more pre-processing steps, they can be added here\n                        zip_output.writestr(name, updated_content)\n                    except Exception:\n                        # If there is an error in processing the content, write the original content\n                        zip_output.writestr(name, content)\n                else:\n                    zip_output.writestr(name, content)\n    output_docx.seek(0)\n    return output_docx\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n\nfrom ._plain_text_converter import PlainTextConverter\nfrom ._html_converter import HtmlConverter\nfrom ._rss_converter import RssConverter\nfrom ._wikipedia_converter import WikipediaConverter\nfrom ._youtube_converter import YouTubeConverter\nfrom ._ipynb_converter import IpynbConverter\nfrom ._bing_serp_converter import BingSerpConverter\nfrom ._pdf_converter import PdfConverter\nfrom ._docx_converter import DocxConverter\nfrom ._xlsx_converter import XlsxConverter, XlsConverter\nfrom ._pptx_converter import PptxConverter\nfrom ._image_converter import ImageConverter\nfrom ._audio_converter import AudioConverter\nfrom ._outlook_msg_converter import OutlookMsgConverter\nfrom ._zip_converter import ZipConverter\nfrom ._doc_intel_converter import (\n    DocumentIntelligenceConverter,\n    DocumentIntelligenceFileType,\n)\nfrom ._epub_converter import EpubConverter\nfrom ._csv_converter import CsvConverter\n\n__all__ = [\n    \"PlainTextConverter\",\n    \"HtmlConverter\",\n    \"RssConverter\",\n    \"WikipediaConverter\",\n    \"YouTubeConverter\",\n    \"IpynbConverter\",\n    \"BingSerpConverter\",\n    \"PdfConverter\",\n    \"DocxConverter\",\n    \"XlsxConverter\",\n    \"XlsConverter\",\n    \"PptxConverter\",\n    \"ImageConverter\",\n    \"AudioConverter\",\n    \"OutlookMsgConverter\",\n    \"ZipConverter\",\n    \"DocumentIntelligenceConverter\",\n    \"DocumentIntelligenceFileType\",\n    \"EpubConverter\",\n    \"CsvConverter\",\n]\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_audio_converter.py",
    "content": "from typing import Any, BinaryIO\n\nfrom ._exiftool import exiftool_metadata\nfrom ._transcribe_audio import transcribe_audio\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import MissingDependencyException\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"audio/x-wav\",\n    \"audio/mpeg\",\n    \"video/mp4\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".wav\",\n    \".mp3\",\n    \".m4a\",\n    \".mp4\",\n]\n\n\nclass AudioConverter(DocumentConverter):\n    \"\"\"\n    Converts audio files to markdown via extraction of metadata (if `exiftool` is installed), and speech transcription (if `speech_recognition` is installed).\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        md_content = \"\"\n\n        # Add metadata\n        metadata = exiftool_metadata(\n            file_stream, exiftool_path=kwargs.get(\"exiftool_path\")\n        )\n        if metadata:\n            for f in [\n                \"Title\",\n                \"Artist\",\n                \"Author\",\n                \"Band\",\n                \"Album\",\n                \"Genre\",\n                \"Track\",\n                \"DateTimeOriginal\",\n                \"CreateDate\",\n                # \"Duration\", -- Wrong values when read from memory\n                \"NumChannels\",\n                \"SampleRate\",\n                \"AvgBytesPerSec\",\n                \"BitsPerSample\",\n            ]:\n                if f in metadata:\n                    md_content += f\"{f}: {metadata[f]}\\n\"\n\n        # Figure out the audio format for transcription\n        if stream_info.extension == \".wav\" or stream_info.mimetype == \"audio/x-wav\":\n            audio_format = \"wav\"\n        elif stream_info.extension == \".mp3\" or stream_info.mimetype == \"audio/mpeg\":\n            audio_format = \"mp3\"\n        elif (\n            stream_info.extension in [\".mp4\", \".m4a\"]\n            or stream_info.mimetype == \"video/mp4\"\n        ):\n            audio_format = \"mp4\"\n        else:\n            audio_format = None\n\n        # Transcribe\n        if audio_format:\n            try:\n                transcript = transcribe_audio(file_stream, audio_format=audio_format)\n                if transcript:\n                    md_content += \"\\n\\n### Audio Transcript:\\n\" + transcript\n            except MissingDependencyException:\n                pass\n\n        # Return the result\n        return DocumentConverterResult(markdown=md_content.strip())\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_bing_serp_converter.py",
    "content": "import re\nimport base64\nimport binascii\nfrom urllib.parse import parse_qs, urlparse\nfrom typing import Any, BinaryIO\nfrom bs4 import BeautifulSoup\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom ._markdownify import _CustomMarkdownify\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/html\",\n    \"application/xhtml\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".html\",\n    \".htm\",\n]\n\n\nclass BingSerpConverter(DocumentConverter):\n    \"\"\"\n    Handle Bing results pages (only the organic search results).\n    NOTE: It is better to use the Bing API\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        \"\"\"\n        Make sure we're dealing with HTML content *from* Bing.\n        \"\"\"\n\n        url = stream_info.url or \"\"\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if not re.search(r\"^https://www\\.bing\\.com/search\\?q=\", url):\n            # Not a Bing SERP URL\n            return False\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        # Not HTML content\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        assert stream_info.url is not None\n\n        # Parse the query parameters\n        parsed_params = parse_qs(urlparse(stream_info.url).query)\n        query = parsed_params.get(\"q\", [\"\"])[0]\n\n        # Parse the stream\n        encoding = \"utf-8\" if stream_info.charset is None else stream_info.charset\n        soup = BeautifulSoup(file_stream, \"html.parser\", from_encoding=encoding)\n\n        # Clean up some formatting\n        for tptt in soup.find_all(class_=\"tptt\"):\n            if hasattr(tptt, \"string\") and tptt.string:\n                tptt.string += \" \"\n        for slug in soup.find_all(class_=\"algoSlug_icon\"):\n            slug.extract()\n\n        # Parse the algorithmic results\n        _markdownify = _CustomMarkdownify(**kwargs)\n        results = list()\n        for result in soup.find_all(class_=\"b_algo\"):\n            if not hasattr(result, \"find_all\"):\n                continue\n\n            # Rewrite redirect urls\n            for a in result.find_all(\"a\", href=True):\n                parsed_href = urlparse(a[\"href\"])\n                qs = parse_qs(parsed_href.query)\n\n                # The destination is contained in the u parameter,\n                # but appears to be base64 encoded, with some prefix\n                if \"u\" in qs:\n                    u = (\n                        qs[\"u\"][0][2:].strip() + \"==\"\n                    )  # Python 3 doesn't care about extra padding\n\n                    try:\n                        # RFC 4648 / Base64URL\" variant, which uses \"-\" and \"_\"\n                        a[\"href\"] = base64.b64decode(u, altchars=\"-_\").decode(\"utf-8\")\n                    except UnicodeDecodeError:\n                        pass\n                    except binascii.Error:\n                        pass\n\n            # Convert to markdown\n            md_result = _markdownify.convert_soup(result).strip()\n            lines = [line.strip() for line in re.split(r\"\\n+\", md_result)]\n            results.append(\"\\n\".join([line for line in lines if len(line) > 0]))\n\n        webpage_text = (\n            f\"## A Bing search for '{query}' found the following results:\\n\\n\"\n            + \"\\n\\n\".join(results)\n        )\n\n        return DocumentConverterResult(\n            markdown=webpage_text,\n            title=None if soup.title is None else soup.title.string,\n        )\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_csv_converter.py",
    "content": "import csv\nimport io\nfrom typing import BinaryIO, Any\nfrom charset_normalizer import from_bytes\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/csv\",\n    \"application/csv\",\n]\nACCEPTED_FILE_EXTENSIONS = [\".csv\"]\n\n\nclass CsvConverter(DocumentConverter):\n    \"\"\"\n    Converts CSV files to Markdown tables.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Read the file content\n        if stream_info.charset:\n            content = file_stream.read().decode(stream_info.charset)\n        else:\n            content = str(from_bytes(file_stream.read()).best())\n\n        # Parse CSV content\n        reader = csv.reader(io.StringIO(content))\n        rows = list(reader)\n\n        if not rows:\n            return DocumentConverterResult(markdown=\"\")\n\n        # Create markdown table\n        markdown_table = []\n\n        # Add header row\n        markdown_table.append(\"| \" + \" | \".join(rows[0]) + \" |\")\n\n        # Add separator row\n        markdown_table.append(\"| \" + \" | \".join([\"---\"] * len(rows[0])) + \" |\")\n\n        # Add data rows\n        for row in rows[1:]:\n            # Make sure row has the same number of columns as header\n            while len(row) < len(rows[0]):\n                row.append(\"\")\n            # Truncate if row has more columns than header\n            row = row[: len(rows[0])]\n            markdown_table.append(\"| \" + \" | \".join(row) + \" |\")\n\n        result = \"\\n\".join(markdown_table)\n\n        return DocumentConverterResult(markdown=result)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_doc_intel_converter.py",
    "content": "import sys\nimport re\nimport os\nfrom typing import BinaryIO, Any, List\nfrom enum import Enum\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import MissingDependencyException\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\ntry:\n    from azure.ai.documentintelligence import DocumentIntelligenceClient\n    from azure.ai.documentintelligence.models import (\n        AnalyzeDocumentRequest,\n        AnalyzeResult,\n        DocumentAnalysisFeature,\n    )\n    from azure.core.credentials import AzureKeyCredential, TokenCredential\n    from azure.identity import DefaultAzureCredential\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\n    # Define these types for type hinting when the package is not available\n    class AzureKeyCredential:\n        pass\n\n    class TokenCredential:\n        pass\n\n    class DocumentIntelligenceClient:\n        pass\n\n    class AnalyzeDocumentRequest:\n        pass\n\n    class AnalyzeResult:\n        pass\n\n    class DocumentAnalysisFeature:\n        pass\n\n    class DefaultAzureCredential:\n        pass\n\n\n# TODO: currently, there is a bug in the document intelligence SDK with importing the \"ContentFormat\" enum.\n# This constant is a temporary fix until the bug is resolved.\nCONTENT_FORMAT = \"markdown\"\n\n\nclass DocumentIntelligenceFileType(str, Enum):\n    \"\"\"Enum of file types supported by the Document Intelligence Converter.\"\"\"\n\n    # No OCR\n    DOCX = \"docx\"\n    PPTX = \"pptx\"\n    XLSX = \"xlsx\"\n    HTML = \"html\"\n    # OCR\n    PDF = \"pdf\"\n    JPEG = \"jpeg\"\n    PNG = \"png\"\n    BMP = \"bmp\"\n    TIFF = \"tiff\"\n\n\ndef _get_mime_type_prefixes(types: List[DocumentIntelligenceFileType]) -> List[str]:\n    \"\"\"Get the MIME type prefixes for the given file types.\"\"\"\n    prefixes: List[str] = []\n    for type_ in types:\n        if type_ == DocumentIntelligenceFileType.DOCX:\n            prefixes.append(\n                \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n            )\n        elif type_ == DocumentIntelligenceFileType.PPTX:\n            prefixes.append(\n                \"application/vnd.openxmlformats-officedocument.presentationml\"\n            )\n        elif type_ == DocumentIntelligenceFileType.XLSX:\n            prefixes.append(\n                \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n            )\n        elif type_ == DocumentIntelligenceFileType.HTML:\n            prefixes.append(\"text/html\")\n            prefixes.append(\"application/xhtml+xml\")\n        elif type_ == DocumentIntelligenceFileType.PDF:\n            prefixes.append(\"application/pdf\")\n            prefixes.append(\"application/x-pdf\")\n        elif type_ == DocumentIntelligenceFileType.JPEG:\n            prefixes.append(\"image/jpeg\")\n        elif type_ == DocumentIntelligenceFileType.PNG:\n            prefixes.append(\"image/png\")\n        elif type_ == DocumentIntelligenceFileType.BMP:\n            prefixes.append(\"image/bmp\")\n        elif type_ == DocumentIntelligenceFileType.TIFF:\n            prefixes.append(\"image/tiff\")\n    return prefixes\n\n\ndef _get_file_extensions(types: List[DocumentIntelligenceFileType]) -> List[str]:\n    \"\"\"Get the file extensions for the given file types.\"\"\"\n    extensions: List[str] = []\n    for type_ in types:\n        if type_ == DocumentIntelligenceFileType.DOCX:\n            extensions.append(\".docx\")\n        elif type_ == DocumentIntelligenceFileType.PPTX:\n            extensions.append(\".pptx\")\n        elif type_ == DocumentIntelligenceFileType.XLSX:\n            extensions.append(\".xlsx\")\n        elif type_ == DocumentIntelligenceFileType.PDF:\n            extensions.append(\".pdf\")\n        elif type_ == DocumentIntelligenceFileType.JPEG:\n            extensions.append(\".jpg\")\n            extensions.append(\".jpeg\")\n        elif type_ == DocumentIntelligenceFileType.PNG:\n            extensions.append(\".png\")\n        elif type_ == DocumentIntelligenceFileType.BMP:\n            extensions.append(\".bmp\")\n        elif type_ == DocumentIntelligenceFileType.TIFF:\n            extensions.append(\".tiff\")\n        elif type_ == DocumentIntelligenceFileType.HTML:\n            extensions.append(\".html\")\n    return extensions\n\n\nclass DocumentIntelligenceConverter(DocumentConverter):\n    \"\"\"Specialized DocumentConverter that uses Document Intelligence to extract text from documents.\"\"\"\n\n    def __init__(\n        self,\n        *,\n        endpoint: str,\n        api_version: str = \"2024-07-31-preview\",\n        credential: AzureKeyCredential | TokenCredential | None = None,\n        file_types: List[DocumentIntelligenceFileType] = [\n            DocumentIntelligenceFileType.DOCX,\n            DocumentIntelligenceFileType.PPTX,\n            DocumentIntelligenceFileType.XLSX,\n            DocumentIntelligenceFileType.PDF,\n            DocumentIntelligenceFileType.JPEG,\n            DocumentIntelligenceFileType.PNG,\n            DocumentIntelligenceFileType.BMP,\n            DocumentIntelligenceFileType.TIFF,\n        ],\n    ):\n        \"\"\"\n        Initialize the DocumentIntelligenceConverter.\n\n        Args:\n            endpoint (str): The endpoint for the Document Intelligence service.\n            api_version (str): The API version to use. Defaults to \"2024-07-31-preview\".\n            credential (AzureKeyCredential | TokenCredential | None): The credential to use for authentication.\n            file_types (List[DocumentIntelligenceFileType]): The file types to accept. Defaults to all supported file types.\n        \"\"\"\n\n        super().__init__()\n        self._file_types = file_types\n\n        # Raise an error if the dependencies are not available.\n        # This is different than other converters since this one isn't even instantiated\n        # unless explicitly requested.\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                \"DocumentIntelligenceConverter requires the optional dependency [az-doc-intel] (or [all]) to be installed. E.g., `pip install markitdown[az-doc-intel]`\"\n            ) from _dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _dependency_exc_info[2]\n            )\n\n        if credential is None:\n            if os.environ.get(\"AZURE_API_KEY\") is None:\n                credential = DefaultAzureCredential()\n            else:\n                credential = AzureKeyCredential(os.environ[\"AZURE_API_KEY\"])\n\n        self.endpoint = endpoint\n        self.api_version = api_version\n        self.doc_intel_client = DocumentIntelligenceClient(\n            endpoint=self.endpoint,\n            api_version=self.api_version,\n            credential=credential,\n        )\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in _get_file_extensions(self._file_types):\n            return True\n\n        for prefix in _get_mime_type_prefixes(self._file_types):\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def _analysis_features(self, stream_info: StreamInfo) -> List[str]:\n        \"\"\"\n        Helper needed to determine which analysis features to use.\n        Certain document analysis features are not availiable for\n        office filetypes (.xlsx, .pptx, .html, .docx)\n        \"\"\"\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        # Types that don't support ocr\n        no_ocr_types = [\n            DocumentIntelligenceFileType.DOCX,\n            DocumentIntelligenceFileType.PPTX,\n            DocumentIntelligenceFileType.XLSX,\n            DocumentIntelligenceFileType.HTML,\n        ]\n\n        if extension in _get_file_extensions(no_ocr_types):\n            return []\n\n        for prefix in _get_mime_type_prefixes(no_ocr_types):\n            if mimetype.startswith(prefix):\n                return []\n\n        return [\n            DocumentAnalysisFeature.FORMULAS,  # enable formula extraction\n            DocumentAnalysisFeature.OCR_HIGH_RESOLUTION,  # enable high resolution OCR\n            DocumentAnalysisFeature.STYLE_FONT,  # enable font style extraction\n        ]\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Extract the text using Azure Document Intelligence\n        poller = self.doc_intel_client.begin_analyze_document(\n            model_id=\"prebuilt-layout\",\n            body=AnalyzeDocumentRequest(bytes_source=file_stream.read()),\n            features=self._analysis_features(stream_info),\n            output_content_format=CONTENT_FORMAT,  # TODO: replace with \"ContentFormat.MARKDOWN\" when the bug is fixed\n        )\n        result: AnalyzeResult = poller.result()\n\n        # remove comments from the markdown content generated by Doc Intelligence and append to markdown string\n        markdown_text = re.sub(r\"<!--.*?-->\", \"\", result.content, flags=re.DOTALL)\n        return DocumentConverterResult(markdown=markdown_text)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_docx_converter.py",
    "content": "import sys\nimport io\nfrom warnings import warn\n\nfrom typing import BinaryIO, Any\n\nfrom ._html_converter import HtmlConverter\nfrom ..converter_utils.docx.pre_process import pre_process_docx\nfrom .._base_converter import DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\ntry:\n    import mammoth\n\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".docx\"]\n\n\nclass DocxConverter(HtmlConverter):\n    \"\"\"\n    Converts DOCX files to Markdown. Style information (e.g.m headings) and tables are preserved where possible.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Check: the dependencies\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".docx\",\n                    feature=\"docx\",\n                )\n            ) from _dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _dependency_exc_info[2]\n            )\n\n        style_map = kwargs.get(\"style_map\", None)\n        pre_process_stream = pre_process_docx(file_stream)\n        return self._html_converter.convert_string(\n            mammoth.convert_to_html(pre_process_stream, style_map=style_map).value,\n            **kwargs,\n        )\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_epub_converter.py",
    "content": "import os\nimport zipfile\nfrom defusedxml import minidom\nfrom xml.dom.minidom import Document\n\nfrom typing import BinaryIO, Any, Dict, List\n\nfrom ._html_converter import HtmlConverter\nfrom .._base_converter import DocumentConverterResult\nfrom .._stream_info import StreamInfo\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/epub\",\n    \"application/epub+zip\",\n    \"application/x-epub+zip\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".epub\"]\n\nMIME_TYPE_MAPPING = {\n    \".html\": \"text/html\",\n    \".xhtml\": \"application/xhtml+xml\",\n}\n\n\nclass EpubConverter(HtmlConverter):\n    \"\"\"\n    Converts EPUB files to Markdown. Style information (e.g.m headings) and tables are preserved where possible.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        with zipfile.ZipFile(file_stream, \"r\") as z:\n            # Extracts metadata (title, authors, language, publisher, date, description, cover) from an EPUB file.\"\"\"\n\n            # Locate content.opf\n            container_dom = minidom.parse(z.open(\"META-INF/container.xml\"))\n            opf_path = container_dom.getElementsByTagName(\"rootfile\")[0].getAttribute(\n                \"full-path\"\n            )\n\n            # Parse content.opf\n            opf_dom = minidom.parse(z.open(opf_path))\n            metadata: Dict[str, Any] = {\n                \"title\": self._get_text_from_node(opf_dom, \"dc:title\"),\n                \"authors\": self._get_all_texts_from_nodes(opf_dom, \"dc:creator\"),\n                \"language\": self._get_text_from_node(opf_dom, \"dc:language\"),\n                \"publisher\": self._get_text_from_node(opf_dom, \"dc:publisher\"),\n                \"date\": self._get_text_from_node(opf_dom, \"dc:date\"),\n                \"description\": self._get_text_from_node(opf_dom, \"dc:description\"),\n                \"identifier\": self._get_text_from_node(opf_dom, \"dc:identifier\"),\n            }\n\n            # Extract manifest items (ID → href mapping)\n            manifest = {\n                item.getAttribute(\"id\"): item.getAttribute(\"href\")\n                for item in opf_dom.getElementsByTagName(\"item\")\n            }\n\n            # Extract spine order (ID refs)\n            spine_items = opf_dom.getElementsByTagName(\"itemref\")\n            spine_order = [item.getAttribute(\"idref\") for item in spine_items]\n\n            # Convert spine order to actual file paths\n            base_path = \"/\".join(\n                opf_path.split(\"/\")[:-1]\n            )  # Get base directory of content.opf\n            spine = [\n                f\"{base_path}/{manifest[item_id]}\" if base_path else manifest[item_id]\n                for item_id in spine_order\n                if item_id in manifest\n            ]\n\n            # Extract and convert the content\n            markdown_content: List[str] = []\n            for file in spine:\n                if file in z.namelist():\n                    with z.open(file) as f:\n                        filename = os.path.basename(file)\n                        extension = os.path.splitext(filename)[1].lower()\n                        mimetype = MIME_TYPE_MAPPING.get(extension)\n                        converted_content = self._html_converter.convert(\n                            f,\n                            StreamInfo(\n                                mimetype=mimetype,\n                                extension=extension,\n                                filename=filename,\n                            ),\n                        )\n                        markdown_content.append(converted_content.markdown.strip())\n\n            # Format and add the metadata\n            metadata_markdown = []\n            for key, value in metadata.items():\n                if isinstance(value, list):\n                    value = \", \".join(value)\n                if value:\n                    metadata_markdown.append(f\"**{key.capitalize()}:** {value}\")\n\n            markdown_content.insert(0, \"\\n\".join(metadata_markdown))\n\n            return DocumentConverterResult(\n                markdown=\"\\n\\n\".join(markdown_content), title=metadata[\"title\"]\n            )\n\n    def _get_text_from_node(self, dom: Document, tag_name: str) -> str | None:\n        \"\"\"Convenience function to extract a single occurrence of a tag (e.g., title).\"\"\"\n        texts = self._get_all_texts_from_nodes(dom, tag_name)\n        if len(texts) > 0:\n            return texts[0]\n        else:\n            return None\n\n    def _get_all_texts_from_nodes(self, dom: Document, tag_name: str) -> List[str]:\n        \"\"\"Helper function to extract all occurrences of a tag (e.g., multiple authors).\"\"\"\n        texts: List[str] = []\n        for node in dom.getElementsByTagName(tag_name):\n            if node.firstChild and hasattr(node.firstChild, \"nodeValue\"):\n                texts.append(node.firstChild.nodeValue.strip())\n        return texts\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_exiftool.py",
    "content": "import json\nimport locale\nimport subprocess\nfrom typing import Any, BinaryIO, Union\n\n\ndef _parse_version(version: str) -> tuple:\n    return tuple(map(int, (version.split(\".\"))))\n\n\ndef exiftool_metadata(\n    file_stream: BinaryIO,\n    *,\n    exiftool_path: Union[str, None],\n) -> Any:  # Need a better type for json data\n    # Nothing to do\n    if not exiftool_path:\n        return {}\n\n    # Verify exiftool version\n    try:\n        version_output = subprocess.run(\n            [exiftool_path, \"-ver\"],\n            capture_output=True,\n            text=True,\n            check=True,\n        ).stdout.strip()\n        version = _parse_version(version_output)\n        min_version = (12, 24)\n        if version < min_version:\n            raise RuntimeError(\n                f\"ExifTool version {version_output} is vulnerable to CVE-2021-22204. \"\n                \"Please upgrade to version 12.24 or later.\"\n            )\n    except (subprocess.CalledProcessError, ValueError) as e:\n        raise RuntimeError(\"Failed to verify ExifTool version.\") from e\n\n    # Run exiftool\n    cur_pos = file_stream.tell()\n    try:\n        output = subprocess.run(\n            [exiftool_path, \"-json\", \"-\"],\n            input=file_stream.read(),\n            capture_output=True,\n            text=False,\n        ).stdout\n\n        return json.loads(\n            output.decode(locale.getpreferredencoding(False)),\n        )[0]\n    finally:\n        file_stream.seek(cur_pos)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_html_converter.py",
    "content": "import io\nfrom typing import Any, BinaryIO, Optional\nfrom bs4 import BeautifulSoup\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom ._markdownify import _CustomMarkdownify\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/html\",\n    \"application/xhtml\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".html\",\n    \".htm\",\n]\n\n\nclass HtmlConverter(DocumentConverter):\n    \"\"\"Anything with content type text/html\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Parse the stream\n        encoding = \"utf-8\" if stream_info.charset is None else stream_info.charset\n        soup = BeautifulSoup(file_stream, \"html.parser\", from_encoding=encoding)\n\n        # Remove javascript and style blocks\n        for script in soup([\"script\", \"style\"]):\n            script.extract()\n\n        # Print only the main content\n        body_elm = soup.find(\"body\")\n        webpage_text = \"\"\n        if body_elm:\n            webpage_text = _CustomMarkdownify(**kwargs).convert_soup(body_elm)\n        else:\n            webpage_text = _CustomMarkdownify(**kwargs).convert_soup(soup)\n\n        assert isinstance(webpage_text, str)\n\n        # remove leading and trailing \\n\n        webpage_text = webpage_text.strip()\n\n        return DocumentConverterResult(\n            markdown=webpage_text,\n            title=None if soup.title is None else soup.title.string,\n        )\n\n    def convert_string(\n        self, html_content: str, *, url: Optional[str] = None, **kwargs\n    ) -> DocumentConverterResult:\n        \"\"\"\n        Non-standard convenience method to convert a string to markdown.\n        Given that many converters produce HTML as intermediate output, this\n        allows for easy conversion of HTML to markdown.\n        \"\"\"\n        return self.convert(\n            file_stream=io.BytesIO(html_content.encode(\"utf-8\")),\n            stream_info=StreamInfo(\n                mimetype=\"text/html\",\n                extension=\".html\",\n                charset=\"utf-8\",\n                url=url,\n            ),\n            **kwargs,\n        )\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_image_converter.py",
    "content": "from typing import BinaryIO, Any, Union\nimport base64\nimport mimetypes\nfrom ._exiftool import exiftool_metadata\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"image/jpeg\",\n    \"image/png\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".jpg\", \".jpeg\", \".png\"]\n\n\nclass ImageConverter(DocumentConverter):\n    \"\"\"\n    Converts images to markdown via extraction of metadata (if `exiftool` is installed), and description via a multimodal LLM (if an llm_client is configured).\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        md_content = \"\"\n\n        # Add metadata\n        metadata = exiftool_metadata(\n            file_stream, exiftool_path=kwargs.get(\"exiftool_path\")\n        )\n\n        if metadata:\n            for f in [\n                \"ImageSize\",\n                \"Title\",\n                \"Caption\",\n                \"Description\",\n                \"Keywords\",\n                \"Artist\",\n                \"Author\",\n                \"DateTimeOriginal\",\n                \"CreateDate\",\n                \"GPSPosition\",\n            ]:\n                if f in metadata:\n                    md_content += f\"{f}: {metadata[f]}\\n\"\n\n        # Try describing the image with GPT\n        llm_client = kwargs.get(\"llm_client\")\n        llm_model = kwargs.get(\"llm_model\")\n        if llm_client is not None and llm_model is not None:\n            llm_description = self._get_llm_description(\n                file_stream,\n                stream_info,\n                client=llm_client,\n                model=llm_model,\n                prompt=kwargs.get(\"llm_prompt\"),\n            )\n\n            if llm_description is not None:\n                md_content += \"\\n# Description:\\n\" + llm_description.strip() + \"\\n\"\n\n        return DocumentConverterResult(\n            markdown=md_content,\n        )\n\n    def _get_llm_description(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        *,\n        client,\n        model,\n        prompt=None,\n    ) -> Union[None, str]:\n        if prompt is None or prompt.strip() == \"\":\n            prompt = \"Write a detailed caption for this image.\"\n\n        # Get the content type\n        content_type = stream_info.mimetype\n        if not content_type:\n            content_type, _ = mimetypes.guess_type(\n                \"_dummy\" + (stream_info.extension or \"\")\n            )\n        if not content_type:\n            content_type = \"application/octet-stream\"\n\n        # Convert to base64\n        cur_pos = file_stream.tell()\n        try:\n            base64_image = base64.b64encode(file_stream.read()).decode(\"utf-8\")\n        except Exception as e:\n            return None\n        finally:\n            file_stream.seek(cur_pos)\n\n        # Prepare the data-uri\n        data_uri = f\"data:{content_type};base64,{base64_image}\"\n\n        # Prepare the OpenAI API request\n        messages = [\n            {\n                \"role\": \"user\",\n                \"content\": [\n                    {\"type\": \"text\", \"text\": prompt},\n                    {\n                        \"type\": \"image_url\",\n                        \"image_url\": {\n                            \"url\": data_uri,\n                        },\n                    },\n                ],\n            }\n        ]\n\n        # Call the OpenAI API\n        response = client.chat.completions.create(model=model, messages=messages)\n        return response.choices[0].message.content\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_ipynb_converter.py",
    "content": "from typing import BinaryIO, Any\nimport json\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._exceptions import FileConversionException\nfrom .._stream_info import StreamInfo\n\nCANDIDATE_MIME_TYPE_PREFIXES = [\n    \"application/json\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".ipynb\"]\n\n\nclass IpynbConverter(DocumentConverter):\n    \"\"\"Converts Jupyter Notebook (.ipynb) files to Markdown.\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in CANDIDATE_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                # Read further to see if it's a notebook\n                cur_pos = file_stream.tell()\n                try:\n                    encoding = stream_info.charset or \"utf-8\"\n                    notebook_content = file_stream.read().decode(encoding)\n                    return (\n                        \"nbformat\" in notebook_content\n                        and \"nbformat_minor\" in notebook_content\n                    )\n                finally:\n                    file_stream.seek(cur_pos)\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Parse and convert the notebook\n        encoding = stream_info.charset or \"utf-8\"\n        notebook_content = file_stream.read().decode(encoding=encoding)\n        return self._convert(json.loads(notebook_content))\n\n    def _convert(self, notebook_content: dict) -> DocumentConverterResult:\n        \"\"\"Helper function that converts notebook JSON content to Markdown.\"\"\"\n        try:\n            md_output = []\n            title = None\n\n            for cell in notebook_content.get(\"cells\", []):\n                cell_type = cell.get(\"cell_type\", \"\")\n                source_lines = cell.get(\"source\", [])\n\n                if cell_type == \"markdown\":\n                    md_output.append(\"\".join(source_lines))\n\n                    # Extract the first # heading as title if not already found\n                    if title is None:\n                        for line in source_lines:\n                            if line.startswith(\"# \"):\n                                title = line.lstrip(\"# \").strip()\n                                break\n\n                elif cell_type == \"code\":\n                    # Code cells are wrapped in Markdown code blocks\n                    md_output.append(f\"```python\\n{''.join(source_lines)}\\n```\")\n                elif cell_type == \"raw\":\n                    md_output.append(f\"```\\n{''.join(source_lines)}\\n```\")\n\n            md_text = \"\\n\\n\".join(md_output)\n\n            # Check for title in notebook metadata\n            title = notebook_content.get(\"metadata\", {}).get(\"title\", title)\n\n            return DocumentConverterResult(\n                markdown=md_text,\n                title=title,\n            )\n\n        except Exception as e:\n            raise FileConversionException(\n                f\"Error converting .ipynb file: {str(e)}\"\n            ) from e\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_llm_caption.py",
    "content": "from typing import BinaryIO, Union\nimport base64\nimport mimetypes\nfrom .._stream_info import StreamInfo\n\n\ndef llm_caption(\n    file_stream: BinaryIO, stream_info: StreamInfo, *, client, model, prompt=None\n) -> Union[None, str]:\n    if prompt is None or prompt.strip() == \"\":\n        prompt = \"Write a detailed caption for this image.\"\n\n    # Get the content type\n    content_type = stream_info.mimetype\n    if not content_type:\n        content_type, _ = mimetypes.guess_type(\"_dummy\" + (stream_info.extension or \"\"))\n    if not content_type:\n        content_type = \"application/octet-stream\"\n\n    # Convert to base64\n    cur_pos = file_stream.tell()\n    try:\n        base64_image = base64.b64encode(file_stream.read()).decode(\"utf-8\")\n    except Exception as e:\n        return None\n    finally:\n        file_stream.seek(cur_pos)\n\n    # Prepare the data-uri\n    data_uri = f\"data:{content_type};base64,{base64_image}\"\n\n    # Prepare the OpenAI API request\n    messages = [\n        {\n            \"role\": \"user\",\n            \"content\": [\n                {\"type\": \"text\", \"text\": prompt},\n                {\n                    \"type\": \"image_url\",\n                    \"image_url\": {\n                        \"url\": data_uri,\n                    },\n                },\n            ],\n        }\n    ]\n\n    # Call the OpenAI API\n    response = client.chat.completions.create(model=model, messages=messages)\n    return response.choices[0].message.content\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_markdownify.py",
    "content": "import re\nimport markdownify\n\nfrom typing import Any, Optional\nfrom urllib.parse import quote, unquote, urlparse, urlunparse\n\n\nclass _CustomMarkdownify(markdownify.MarkdownConverter):\n    \"\"\"\n    A custom version of markdownify's MarkdownConverter. Changes include:\n\n    - Altering the default heading style to use '#', '##', etc.\n    - Removing javascript hyperlinks.\n    - Truncating images with large data:uri sources.\n    - Ensuring URIs are properly escaped, and do not conflict with Markdown syntax\n    \"\"\"\n\n    def __init__(self, **options: Any):\n        options[\"heading_style\"] = options.get(\"heading_style\", markdownify.ATX)\n        options[\"keep_data_uris\"] = options.get(\"keep_data_uris\", False)\n        # Explicitly cast options to the expected type if necessary\n        super().__init__(**options)\n\n    def convert_hn(\n        self,\n        n: int,\n        el: Any,\n        text: str,\n        convert_as_inline: Optional[bool] = False,\n        **kwargs,\n    ) -> str:\n        \"\"\"Same as usual, but be sure to start with a new line\"\"\"\n        if not convert_as_inline:\n            if not re.search(r\"^\\n\", text):\n                return \"\\n\" + super().convert_hn(n, el, text, convert_as_inline)  # type: ignore\n\n        return super().convert_hn(n, el, text, convert_as_inline)  # type: ignore\n\n    def convert_a(\n        self,\n        el: Any,\n        text: str,\n        convert_as_inline: Optional[bool] = False,\n        **kwargs,\n    ):\n        \"\"\"Same as usual converter, but removes Javascript links and escapes URIs.\"\"\"\n        prefix, suffix, text = markdownify.chomp(text)  # type: ignore\n        if not text:\n            return \"\"\n\n        if el.find_parent(\"pre\") is not None:\n            return text\n\n        href = el.get(\"href\")\n        title = el.get(\"title\")\n\n        # Escape URIs and skip non-http or file schemes\n        if href:\n            try:\n                parsed_url = urlparse(href)  # type: ignore\n                if parsed_url.scheme and parsed_url.scheme.lower() not in [\"http\", \"https\", \"file\"]:  # type: ignore\n                    return \"%s%s%s\" % (prefix, text, suffix)\n                href = urlunparse(parsed_url._replace(path=quote(unquote(parsed_url.path))))  # type: ignore\n            except ValueError:  # It's not clear if this ever gets thrown\n                return \"%s%s%s\" % (prefix, text, suffix)\n\n        # For the replacement see #29: text nodes underscores are escaped\n        if (\n            self.options[\"autolinks\"]\n            and text.replace(r\"\\_\", \"_\") == href\n            and not title\n            and not self.options[\"default_title\"]\n        ):\n            # Shortcut syntax\n            return \"<%s>\" % href\n        if self.options[\"default_title\"] and not title:\n            title = href\n        title_part = ' \"%s\"' % title.replace('\"', r\"\\\"\") if title else \"\"\n        return (\n            \"%s[%s](%s%s)%s\" % (prefix, text, href, title_part, suffix)\n            if href\n            else text\n        )\n\n    def convert_img(\n        self,\n        el: Any,\n        text: str,\n        convert_as_inline: Optional[bool] = False,\n        **kwargs,\n    ) -> str:\n        \"\"\"Same as usual converter, but removes data URIs\"\"\"\n\n        alt = el.attrs.get(\"alt\", None) or \"\"\n        src = el.attrs.get(\"src\", None) or el.attrs.get(\"data-src\", None) or \"\"\n        title = el.attrs.get(\"title\", None) or \"\"\n        title_part = ' \"%s\"' % title.replace('\"', r\"\\\"\") if title else \"\"\n        # Remove all line breaks from alt\n        alt = alt.replace(\"\\n\", \" \")\n        if (\n            convert_as_inline\n            and el.parent.name not in self.options[\"keep_inline_images_in\"]\n        ):\n            return alt\n\n        # Remove dataURIs\n        if src.startswith(\"data:\") and not self.options[\"keep_data_uris\"]:\n            src = src.split(\",\")[0] + \"...\"\n\n        return \"![%s](%s%s)\" % (alt, src, title_part)\n\n    def convert_input(\n        self,\n        el: Any,\n        text: str,\n        convert_as_inline: Optional[bool] = False,\n        **kwargs,\n    ) -> str:\n        \"\"\"Convert checkboxes to Markdown [x]/[ ] syntax.\"\"\"\n\n        if el.get(\"type\") == \"checkbox\":\n            return \"[x] \" if el.has_attr(\"checked\") else \"[ ] \"\n        return \"\"\n\n    def convert_soup(self, soup: Any) -> str:\n        return super().convert_soup(soup)  # type: ignore\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_outlook_msg_converter.py",
    "content": "import sys\nfrom typing import Any, Union, BinaryIO\nfrom .._stream_info import StreamInfo\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\nolefile = None\ntry:\n    import olefile  # type: ignore[no-redef]\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/vnd.ms-outlook\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".msg\"]\n\n\nclass OutlookMsgConverter(DocumentConverter):\n    \"\"\"Converts Outlook .msg files to markdown by extracting email metadata and content.\n\n    Uses the olefile package to parse the .msg file structure and extract:\n    - Email headers (From, To, Subject)\n    - Email body content\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        # Check the extension and mimetype\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        # Brute force, check if we have an OLE file\n        cur_pos = file_stream.tell()\n        try:\n            if olefile and not olefile.isOleFile(file_stream):\n                return False\n        finally:\n            file_stream.seek(cur_pos)\n\n        # Brue force, check if it's an Outlook file\n        try:\n            if olefile is not None:\n                msg = olefile.OleFileIO(file_stream)\n                toc = \"\\n\".join([str(stream) for stream in msg.listdir()])\n                return (\n                    \"__properties_version1.0\" in toc\n                    and \"__recip_version1.0_#00000000\" in toc\n                )\n        except Exception as e:\n            pass\n        finally:\n            file_stream.seek(cur_pos)\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Check: the dependencies\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".msg\",\n                    feature=\"outlook\",\n                )\n            ) from _dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _dependency_exc_info[2]\n            )\n\n        assert (\n            olefile is not None\n        )  # If we made it this far, olefile should be available\n        msg = olefile.OleFileIO(file_stream)\n\n        # Extract email metadata\n        md_content = \"# Email Message\\n\\n\"\n\n        # Get headers\n        headers = {\n            \"From\": self._get_stream_data(msg, \"__substg1.0_0C1F001F\"),\n            \"To\": self._get_stream_data(msg, \"__substg1.0_0E04001F\"),\n            \"Subject\": self._get_stream_data(msg, \"__substg1.0_0037001F\"),\n        }\n\n        # Add headers to markdown\n        for key, value in headers.items():\n            if value:\n                md_content += f\"**{key}:** {value}\\n\"\n\n        md_content += \"\\n## Content\\n\\n\"\n\n        # Get email body\n        body = self._get_stream_data(msg, \"__substg1.0_1000001F\")\n        if body:\n            md_content += body\n\n        msg.close()\n\n        return DocumentConverterResult(\n            markdown=md_content.strip(),\n            title=headers.get(\"Subject\"),\n        )\n\n    def _get_stream_data(self, msg: Any, stream_path: str) -> Union[str, None]:\n        \"\"\"Helper to safely extract and decode stream data from the MSG file.\"\"\"\n        assert olefile is not None\n        assert isinstance(\n            msg, olefile.OleFileIO\n        )  # Ensure msg is of the correct type (type hinting is not possible with the optional olefile package)\n\n        try:\n            if msg.exists(stream_path):\n                data = msg.openstream(stream_path).read()\n                # Try UTF-16 first (common for .msg files)\n                try:\n                    return data.decode(\"utf-16-le\").strip()\n                except UnicodeDecodeError:\n                    # Fall back to UTF-8\n                    try:\n                        return data.decode(\"utf-8\").strip()\n                    except UnicodeDecodeError:\n                        # Last resort - ignore errors\n                        return data.decode(\"utf-8\", errors=\"ignore\").strip()\n        except Exception:\n            pass\n        return None\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_pdf_converter.py",
    "content": "import sys\nimport io\nimport re\nfrom typing import BinaryIO, Any\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE\n\n# Pattern for MasterFormat-style partial numbering (e.g., \".1\", \".2\", \".10\")\nPARTIAL_NUMBERING_PATTERN = re.compile(r\"^\\.\\d+$\")\n\n\ndef _merge_partial_numbering_lines(text: str) -> str:\n    \"\"\"\n    Post-process extracted text to merge MasterFormat-style partial numbering\n    with the following text line.\n\n    MasterFormat documents use partial numbering like:\n        .1  The intent of this Request for Proposal...\n        .2  Available information relative to...\n\n    Some PDF extractors split these into separate lines:\n        .1\n        The intent of this Request for Proposal...\n\n    This function merges them back together.\n    \"\"\"\n    lines = text.split(\"\\n\")\n    result_lines: list[str] = []\n    i = 0\n\n    while i < len(lines):\n        line = lines[i]\n        stripped = line.strip()\n\n        # Check if this line is ONLY a partial numbering\n        if PARTIAL_NUMBERING_PATTERN.match(stripped):\n            # Look for the next non-empty line to merge with\n            j = i + 1\n            while j < len(lines) and not lines[j].strip():\n                j += 1\n\n            if j < len(lines):\n                # Merge the partial numbering with the next line\n                next_line = lines[j].strip()\n                result_lines.append(f\"{stripped} {next_line}\")\n                i = j + 1  # Skip past the merged line\n            else:\n                # No next line to merge with, keep as is\n                result_lines.append(line)\n                i += 1\n        else:\n            result_lines.append(line)\n            i += 1\n\n    return \"\\n\".join(result_lines)\n\n\n# Load dependencies\n_dependency_exc_info = None\ntry:\n    import pdfminer\n    import pdfminer.high_level\n    import pdfplumber\nexcept ImportError:\n    _dependency_exc_info = sys.exc_info()\n\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/pdf\",\n    \"application/x-pdf\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".pdf\"]\n\n\ndef _to_markdown_table(table: list[list[str]], include_separator: bool = True) -> str:\n    \"\"\"Convert a 2D list (rows/columns) into a nicely aligned Markdown table.\n\n    Args:\n        table: 2D list of cell values\n        include_separator: If True, include header separator row (standard markdown).\n                          If False, output simple pipe-separated rows.\n    \"\"\"\n    if not table:\n        return \"\"\n\n    # Normalize None → \"\"\n    table = [[cell if cell is not None else \"\" for cell in row] for row in table]\n\n    # Filter out empty rows\n    table = [row for row in table if any(cell.strip() for cell in row)]\n\n    if not table:\n        return \"\"\n\n    # Column widths\n    col_widths = [max(len(str(cell)) for cell in col) for col in zip(*table)]\n\n    def fmt_row(row: list[str]) -> str:\n        return (\n            \"|\"\n            + \"|\".join(str(cell).ljust(width) for cell, width in zip(row, col_widths))\n            + \"|\"\n        )\n\n    if include_separator:\n        header, *rows = table\n        md = [fmt_row(header)]\n        md.append(\"|\" + \"|\".join(\"-\" * w for w in col_widths) + \"|\")\n        for row in rows:\n            md.append(fmt_row(row))\n    else:\n        md = [fmt_row(row) for row in table]\n\n    return \"\\n\".join(md)\n\n\ndef _extract_form_content_from_words(page: Any) -> str | None:\n    \"\"\"\n    Extract form-style content from a PDF page by analyzing word positions.\n    This handles borderless forms/tables where words are aligned in columns.\n\n    Returns markdown with proper table formatting:\n    - Tables have pipe-separated columns with header separator rows\n    - Non-table content is rendered as plain text\n\n    Returns None if the page doesn't appear to be a form-style document,\n    indicating that pdfminer should be used instead for better text spacing.\n    \"\"\"\n    words = page.extract_words(keep_blank_chars=True, x_tolerance=3, y_tolerance=3)\n    if not words:\n        return None\n\n    # Group words by their Y position (rows)\n    y_tolerance = 5\n    rows_by_y: dict[float, list[dict]] = {}\n    for word in words:\n        y_key = round(word[\"top\"] / y_tolerance) * y_tolerance\n        if y_key not in rows_by_y:\n            rows_by_y[y_key] = []\n        rows_by_y[y_key].append(word)\n\n    # Sort rows by Y position\n    sorted_y_keys = sorted(rows_by_y.keys())\n    page_width = page.width if hasattr(page, \"width\") else 612\n\n    # First pass: analyze each row\n    row_info: list[dict] = []\n    for y_key in sorted_y_keys:\n        row_words = sorted(rows_by_y[y_key], key=lambda w: w[\"x0\"])\n        if not row_words:\n            continue\n\n        first_x0 = row_words[0][\"x0\"]\n        last_x1 = row_words[-1][\"x1\"]\n        line_width = last_x1 - first_x0\n        combined_text = \" \".join(w[\"text\"] for w in row_words)\n\n        # Count distinct x-position groups (columns)\n        x_positions = [w[\"x0\"] for w in row_words]\n        x_groups: list[float] = []\n        for x in sorted(x_positions):\n            if not x_groups or x - x_groups[-1] > 50:\n                x_groups.append(x)\n\n        # Determine row type\n        is_paragraph = line_width > page_width * 0.55 and len(combined_text) > 60\n\n        # Check for MasterFormat-style partial numbering (e.g., \".1\", \".2\")\n        # These should be treated as list items, not table rows\n        has_partial_numbering = False\n        if row_words:\n            first_word = row_words[0][\"text\"].strip()\n            if PARTIAL_NUMBERING_PATTERN.match(first_word):\n                has_partial_numbering = True\n\n        row_info.append(\n            {\n                \"y_key\": y_key,\n                \"words\": row_words,\n                \"text\": combined_text,\n                \"x_groups\": x_groups,\n                \"is_paragraph\": is_paragraph,\n                \"num_columns\": len(x_groups),\n                \"has_partial_numbering\": has_partial_numbering,\n            }\n        )\n\n    # Collect ALL x-positions from rows with 3+ columns (table-like rows)\n    # This gives us the global column structure\n    all_table_x_positions: list[float] = []\n    for info in row_info:\n        if info[\"num_columns\"] >= 3 and not info[\"is_paragraph\"]:\n            all_table_x_positions.extend(info[\"x_groups\"])\n\n    if not all_table_x_positions:\n        return None\n\n    # Compute adaptive column clustering tolerance based on gap analysis\n    all_table_x_positions.sort()\n\n    # Calculate gaps between consecutive x-positions\n    gaps = []\n    for i in range(len(all_table_x_positions) - 1):\n        gap = all_table_x_positions[i + 1] - all_table_x_positions[i]\n        if gap > 5:  # Only significant gaps\n            gaps.append(gap)\n\n    # Determine optimal tolerance using statistical analysis\n    if gaps and len(gaps) >= 3:\n        # Use 70th percentile of gaps as threshold (balances precision/recall)\n        sorted_gaps = sorted(gaps)\n        percentile_70_idx = int(len(sorted_gaps) * 0.70)\n        adaptive_tolerance = sorted_gaps[percentile_70_idx]\n\n        # Clamp tolerance to reasonable range [25, 50]\n        adaptive_tolerance = max(25, min(50, adaptive_tolerance))\n    else:\n        # Fallback to conservative value\n        adaptive_tolerance = 35\n\n    # Compute global column boundaries using adaptive tolerance\n    global_columns: list[float] = []\n    for x in all_table_x_positions:\n        if not global_columns or x - global_columns[-1] > adaptive_tolerance:\n            global_columns.append(x)\n\n    # Adaptive max column check based on page characteristics\n    # Calculate average column width\n    if len(global_columns) > 1:\n        content_width = global_columns[-1] - global_columns[0]\n        avg_col_width = content_width / len(global_columns)\n\n        # Forms with very narrow columns (< 30px) are likely dense text\n        if avg_col_width < 30:\n            return None\n\n        # Compute adaptive max based on columns per inch\n        # Typical forms have 3-8 columns per inch\n        columns_per_inch = len(global_columns) / (content_width / 72)\n\n        # If density is too high (> 10 cols/inch), likely not a form\n        if columns_per_inch > 10:\n            return None\n\n        # Adaptive max: allow more columns for wider pages\n        # Standard letter is 612pt wide, so scale accordingly\n        adaptive_max_columns = int(20 * (page_width / 612))\n        adaptive_max_columns = max(15, adaptive_max_columns)  # At least 15\n\n        if len(global_columns) > adaptive_max_columns:\n            return None\n    else:\n        # Single column, not a form\n        return None\n\n    # Now classify each row as table row or not\n    # A row is a table row if it has words that align with 2+ of the global columns\n    for info in row_info:\n        if info[\"is_paragraph\"]:\n            info[\"is_table_row\"] = False\n            continue\n\n        # Rows with partial numbering (e.g., \".1\", \".2\") are list items, not table rows\n        if info[\"has_partial_numbering\"]:\n            info[\"is_table_row\"] = False\n            continue\n\n        # Count how many global columns this row's words align with\n        aligned_columns: set[int] = set()\n        for word in info[\"words\"]:\n            word_x = word[\"x0\"]\n            for col_idx, col_x in enumerate(global_columns):\n                if abs(word_x - col_x) < 40:\n                    aligned_columns.add(col_idx)\n                    break\n\n        # If row uses 2+ of the established columns, it's a table row\n        info[\"is_table_row\"] = len(aligned_columns) >= 2\n\n    # Find table regions (consecutive table rows)\n    table_regions: list[tuple[int, int]] = []  # (start_idx, end_idx)\n    i = 0\n    while i < len(row_info):\n        if row_info[i][\"is_table_row\"]:\n            start_idx = i\n            while i < len(row_info) and row_info[i][\"is_table_row\"]:\n                i += 1\n            end_idx = i\n            table_regions.append((start_idx, end_idx))\n        else:\n            i += 1\n\n    # Check if enough rows are table rows (at least 20%)\n    total_table_rows = sum(end - start for start, end in table_regions)\n    if len(row_info) > 0 and total_table_rows / len(row_info) < 0.2:\n        return None\n\n    # Build output - collect table data first, then format with proper column widths\n    result_lines: list[str] = []\n    num_cols = len(global_columns)\n\n    # Helper function to extract cells from a row\n    def extract_cells(info: dict) -> list[str]:\n        cells: list[str] = [\"\" for _ in range(num_cols)]\n        for word in info[\"words\"]:\n            word_x = word[\"x0\"]\n            # Find the correct column using boundary ranges\n            assigned_col = num_cols - 1  # Default to last column\n            for col_idx in range(num_cols - 1):\n                col_end = global_columns[col_idx + 1]\n                if word_x < col_end - 20:\n                    assigned_col = col_idx\n                    break\n            if cells[assigned_col]:\n                cells[assigned_col] += \" \" + word[\"text\"]\n            else:\n                cells[assigned_col] = word[\"text\"]\n        return cells\n\n    # Process rows, collecting table data for proper formatting\n    idx = 0\n    while idx < len(row_info):\n        info = row_info[idx]\n\n        # Check if this row starts a table region\n        table_region = None\n        for start, end in table_regions:\n            if idx == start:\n                table_region = (start, end)\n                break\n\n        if table_region:\n            start, end = table_region\n            # Collect all rows in this table\n            table_data: list[list[str]] = []\n            for table_idx in range(start, end):\n                cells = extract_cells(row_info[table_idx])\n                table_data.append(cells)\n\n            # Calculate column widths for this table\n            if table_data:\n                col_widths = [\n                    max(len(row[col]) for row in table_data) for col in range(num_cols)\n                ]\n                # Ensure minimum width of 3 for separator dashes\n                col_widths = [max(w, 3) for w in col_widths]\n\n                # Format header row\n                header = table_data[0]\n                header_str = (\n                    \"| \"\n                    + \" | \".join(\n                        cell.ljust(col_widths[i]) for i, cell in enumerate(header)\n                    )\n                    + \" |\"\n                )\n                result_lines.append(header_str)\n\n                # Format separator row\n                separator = (\n                    \"| \"\n                    + \" | \".join(\"-\" * col_widths[i] for i in range(num_cols))\n                    + \" |\"\n                )\n                result_lines.append(separator)\n\n                # Format data rows\n                for row in table_data[1:]:\n                    row_str = (\n                        \"| \"\n                        + \" | \".join(\n                            cell.ljust(col_widths[i]) for i, cell in enumerate(row)\n                        )\n                        + \" |\"\n                    )\n                    result_lines.append(row_str)\n\n            idx = end  # Skip to end of table region\n        else:\n            # Check if we're inside a table region (not at start)\n            in_table = False\n            for start, end in table_regions:\n                if start < idx < end:\n                    in_table = True\n                    break\n\n            if not in_table:\n                # Non-table content\n                result_lines.append(info[\"text\"])\n            idx += 1\n\n    return \"\\n\".join(result_lines)\n\n\ndef _extract_tables_from_words(page: Any) -> list[list[list[str]]]:\n    \"\"\"\n    Extract tables from a PDF page by analyzing word positions.\n    This handles borderless tables where words are aligned in columns.\n\n    This function is designed for structured tabular data (like invoices),\n    not for multi-column text layouts in scientific documents.\n    \"\"\"\n    words = page.extract_words(keep_blank_chars=True, x_tolerance=3, y_tolerance=3)\n    if not words:\n        return []\n\n    # Group words by their Y position (rows)\n    y_tolerance = 5\n    rows_by_y: dict[float, list[dict]] = {}\n    for word in words:\n        y_key = round(word[\"top\"] / y_tolerance) * y_tolerance\n        if y_key not in rows_by_y:\n            rows_by_y[y_key] = []\n        rows_by_y[y_key].append(word)\n\n    # Sort rows by Y position\n    sorted_y_keys = sorted(rows_by_y.keys())\n\n    # Find potential column boundaries by analyzing x positions across all rows\n    all_x_positions = []\n    for words_in_row in rows_by_y.values():\n        for word in words_in_row:\n            all_x_positions.append(word[\"x0\"])\n\n    if not all_x_positions:\n        return []\n\n    # Cluster x positions to find column starts\n    all_x_positions.sort()\n    x_tolerance_col = 20\n    column_starts: list[float] = []\n    for x in all_x_positions:\n        if not column_starts or x - column_starts[-1] > x_tolerance_col:\n            column_starts.append(x)\n\n    # Need at least 3 columns but not too many (likely text layout, not table)\n    if len(column_starts) < 3 or len(column_starts) > 10:\n        return []\n\n    # Find rows that span multiple columns (potential table rows)\n    table_rows = []\n    for y_key in sorted_y_keys:\n        words_in_row = sorted(rows_by_y[y_key], key=lambda w: w[\"x0\"])\n\n        # Assign words to columns\n        row_data = [\"\"] * len(column_starts)\n        for word in words_in_row:\n            # Find the closest column\n            best_col = 0\n            min_dist = float(\"inf\")\n            for i, col_x in enumerate(column_starts):\n                dist = abs(word[\"x0\"] - col_x)\n                if dist < min_dist:\n                    min_dist = dist\n                    best_col = i\n\n            if row_data[best_col]:\n                row_data[best_col] += \" \" + word[\"text\"]\n            else:\n                row_data[best_col] = word[\"text\"]\n\n        # Only include rows that have content in multiple columns\n        non_empty = sum(1 for cell in row_data if cell.strip())\n        if non_empty >= 2:\n            table_rows.append(row_data)\n\n    # Validate table quality - tables should have:\n    # 1. Enough rows (at least 3 including header)\n    # 2. Short cell content (tables have concise data, not paragraphs)\n    # 3. Consistent structure across rows\n    if len(table_rows) < 3:\n        return []\n\n    # Check if cells contain short, structured data (not long text)\n    long_cell_count = 0\n    total_cell_count = 0\n    for row in table_rows:\n        for cell in row:\n            if cell.strip():\n                total_cell_count += 1\n                # If cell has more than 30 chars, it's likely prose text\n                if len(cell.strip()) > 30:\n                    long_cell_count += 1\n\n    # If more than 30% of cells are long, this is probably not a table\n    if total_cell_count > 0 and long_cell_count / total_cell_count > 0.3:\n        return []\n\n    return [table_rows]\n\n\nclass PdfConverter(DocumentConverter):\n    \"\"\"\n    Converts PDFs to Markdown.\n    Supports extracting tables into aligned Markdown format (via pdfplumber).\n    Falls back to pdfminer if pdfplumber is missing or fails.\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".pdf\",\n                    feature=\"pdf\",\n                )\n            ) from _dependency_exc_info[1].with_traceback(\n                _dependency_exc_info[2]\n            )  # type: ignore[union-attr]\n\n        assert isinstance(file_stream, io.IOBase)\n\n        # Read file stream into BytesIO for compatibility with pdfplumber\n        pdf_bytes = io.BytesIO(file_stream.read())\n\n        try:\n            # Single pass: check every page for form-style content.\n            # Pages with tables/forms get rich extraction; plain-text\n            # pages are collected separately. page.close() is called\n            # after each page to free pdfplumber's cached objects and\n            # keep memory usage constant regardless of page count.\n            markdown_chunks: list[str] = []\n            form_page_count = 0\n            plain_page_indices: list[int] = []\n\n            with pdfplumber.open(pdf_bytes) as pdf:\n                for page_idx, page in enumerate(pdf.pages):\n                    page_content = _extract_form_content_from_words(page)\n\n                    if page_content is not None:\n                        form_page_count += 1\n                        if page_content.strip():\n                            markdown_chunks.append(page_content)\n                    else:\n                        plain_page_indices.append(page_idx)\n                        text = page.extract_text()\n                        if text and text.strip():\n                            markdown_chunks.append(text.strip())\n\n                    page.close()  # Free cached page data immediately\n\n            # If no pages had form-style content, use pdfminer for\n            # the whole document (better text spacing for prose).\n            if form_page_count == 0:\n                pdf_bytes.seek(0)\n                markdown = pdfminer.high_level.extract_text(pdf_bytes)\n            else:\n                markdown = \"\\n\\n\".join(markdown_chunks).strip()\n\n        except Exception:\n            # Fallback if pdfplumber fails\n            pdf_bytes.seek(0)\n            markdown = pdfminer.high_level.extract_text(pdf_bytes)\n\n        # Fallback if still empty\n        if not markdown:\n            pdf_bytes.seek(0)\n            markdown = pdfminer.high_level.extract_text(pdf_bytes)\n\n        # Post-process to merge MasterFormat-style partial numbering with following text\n        markdown = _merge_partial_numbering_lines(markdown)\n\n        return DocumentConverterResult(markdown=markdown)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_plain_text_converter.py",
    "content": "import sys\n\nfrom typing import BinaryIO, Any\nfrom charset_normalizer import from_bytes\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\ntry:\n    import mammoth  # noqa: F401\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/\",\n    \"application/json\",\n    \"application/markdown\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".txt\",\n    \".text\",\n    \".md\",\n    \".markdown\",\n    \".json\",\n    \".jsonl\",\n]\n\n\nclass PlainTextConverter(DocumentConverter):\n    \"\"\"Anything with content type text/plain\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        # If we have a charset, we can safely assume it's text\n        # With Magika in the earlier stages, this handles most cases\n        if stream_info.charset is not None:\n            return True\n\n        # Otherwise, check the mimetype and extension\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        if stream_info.charset:\n            text_content = file_stream.read().decode(stream_info.charset)\n        else:\n            text_content = str(from_bytes(file_stream.read()).best())\n\n        return DocumentConverterResult(markdown=text_content)\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_pptx_converter.py",
    "content": "import sys\nimport base64\nimport os\nimport io\nimport re\nimport html\n\nfrom typing import BinaryIO, Any\nfrom operator import attrgetter\n\nfrom ._html_converter import HtmlConverter\nfrom ._llm_caption import llm_caption\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\ntry:\n    import pptx\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/vnd.openxmlformats-officedocument.presentationml\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".pptx\"]\n\n\nclass PptxConverter(DocumentConverter):\n    \"\"\"\n    Converts PPTX files to Markdown. Supports heading, tables and images with alt text.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Check the dependencies\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".pptx\",\n                    feature=\"pptx\",\n                )\n            ) from _dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _dependency_exc_info[2]\n            )\n\n        # Perform the conversion\n        presentation = pptx.Presentation(file_stream)\n        md_content = \"\"\n        slide_num = 0\n        for slide in presentation.slides:\n            slide_num += 1\n\n            md_content += f\"\\n\\n<!-- Slide number: {slide_num} -->\\n\"\n\n            title = slide.shapes.title\n\n            def get_shape_content(shape, **kwargs):\n                nonlocal md_content\n                # Pictures\n                if self._is_picture(shape):\n                    # https://github.com/scanny/python-pptx/pull/512#issuecomment-1713100069\n\n                    llm_description = \"\"\n                    alt_text = \"\"\n\n                    # Potentially generate a description using an LLM\n                    llm_client = kwargs.get(\"llm_client\")\n                    llm_model = kwargs.get(\"llm_model\")\n                    if llm_client is not None and llm_model is not None:\n                        # Prepare a file_stream and stream_info for the image data\n                        image_filename = shape.image.filename\n                        image_extension = None\n                        if image_filename:\n                            image_extension = os.path.splitext(image_filename)[1]\n                        image_stream_info = StreamInfo(\n                            mimetype=shape.image.content_type,\n                            extension=image_extension,\n                            filename=image_filename,\n                        )\n\n                        image_stream = io.BytesIO(shape.image.blob)\n\n                        # Caption the image\n                        try:\n                            llm_description = llm_caption(\n                                image_stream,\n                                image_stream_info,\n                                client=llm_client,\n                                model=llm_model,\n                                prompt=kwargs.get(\"llm_prompt\"),\n                            )\n                        except Exception:\n                            # Unable to generate a description\n                            pass\n\n                    # Also grab any description embedded in the deck\n                    try:\n                        alt_text = shape._element._nvXxPr.cNvPr.attrib.get(\"descr\", \"\")\n                    except Exception:\n                        # Unable to get alt text\n                        pass\n\n                    # Prepare the alt, escaping any special characters\n                    alt_text = \"\\n\".join([llm_description, alt_text]) or shape.name\n                    alt_text = re.sub(r\"[\\r\\n\\[\\]]\", \" \", alt_text)\n                    alt_text = re.sub(r\"\\s+\", \" \", alt_text).strip()\n\n                    # If keep_data_uris is True, use base64 encoding for images\n                    if kwargs.get(\"keep_data_uris\", False):\n                        blob = shape.image.blob\n                        content_type = shape.image.content_type or \"image/png\"\n                        b64_string = base64.b64encode(blob).decode(\"utf-8\")\n                        md_content += f\"\\n![{alt_text}](data:{content_type};base64,{b64_string})\\n\"\n                    else:\n                        # A placeholder name\n                        filename = re.sub(r\"\\W\", \"\", shape.name) + \".jpg\"\n                        md_content += \"\\n![\" + alt_text + \"](\" + filename + \")\\n\"\n\n                # Tables\n                if self._is_table(shape):\n                    md_content += self._convert_table_to_markdown(shape.table, **kwargs)\n\n                # Charts\n                if shape.has_chart:\n                    md_content += self._convert_chart_to_markdown(shape.chart)\n\n                # Text areas\n                elif shape.has_text_frame:\n                    if shape == title:\n                        md_content += \"# \" + shape.text.lstrip() + \"\\n\"\n                    else:\n                        md_content += shape.text + \"\\n\"\n\n                # Group Shapes\n                if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.GROUP:\n                    sorted_shapes = sorted(\n                        shape.shapes,\n                        key=lambda x: (\n                            float(\"-inf\") if not x.top else x.top,\n                            float(\"-inf\") if not x.left else x.left,\n                        ),\n                    )\n                    for subshape in sorted_shapes:\n                        get_shape_content(subshape, **kwargs)\n\n            sorted_shapes = sorted(\n                slide.shapes,\n                key=lambda x: (\n                    float(\"-inf\") if not x.top else x.top,\n                    float(\"-inf\") if not x.left else x.left,\n                ),\n            )\n            for shape in sorted_shapes:\n                get_shape_content(shape, **kwargs)\n\n            md_content = md_content.strip()\n\n            if slide.has_notes_slide:\n                md_content += \"\\n\\n### Notes:\\n\"\n                notes_frame = slide.notes_slide.notes_text_frame\n                if notes_frame is not None:\n                    md_content += notes_frame.text\n                md_content = md_content.strip()\n\n        return DocumentConverterResult(markdown=md_content.strip())\n\n    def _is_picture(self, shape):\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PICTURE:\n            return True\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PLACEHOLDER:\n            if hasattr(shape, \"image\"):\n                return True\n        return False\n\n    def _is_table(self, shape):\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.TABLE:\n            return True\n        return False\n\n    def _convert_table_to_markdown(self, table, **kwargs):\n        # Write the table as HTML, then convert it to Markdown\n        html_table = \"<html><body><table>\"\n        first_row = True\n        for row in table.rows:\n            html_table += \"<tr>\"\n            for cell in row.cells:\n                if first_row:\n                    html_table += \"<th>\" + html.escape(cell.text) + \"</th>\"\n                else:\n                    html_table += \"<td>\" + html.escape(cell.text) + \"</td>\"\n            html_table += \"</tr>\"\n            first_row = False\n        html_table += \"</table></body></html>\"\n\n        return (\n            self._html_converter.convert_string(html_table, **kwargs).markdown.strip()\n            + \"\\n\"\n        )\n\n    def _convert_chart_to_markdown(self, chart):\n        try:\n            md = \"\\n\\n### Chart\"\n            if chart.has_title:\n                md += f\": {chart.chart_title.text_frame.text}\"\n            md += \"\\n\\n\"\n            data = []\n            category_names = [c.label for c in chart.plots[0].categories]\n            series_names = [s.name for s in chart.series]\n            data.append([\"Category\"] + series_names)\n\n            for idx, category in enumerate(category_names):\n                row = [category]\n                for series in chart.series:\n                    row.append(series.values[idx])\n                data.append(row)\n\n            markdown_table = []\n            for row in data:\n                markdown_table.append(\"| \" + \" | \".join(map(str, row)) + \" |\")\n            header = markdown_table[0]\n            separator = \"|\" + \"|\".join([\"---\"] * len(data[0])) + \"|\"\n            return md + \"\\n\".join([header, separator] + markdown_table[1:])\n        except ValueError as e:\n            # Handle the specific error for unsupported chart types\n            if \"unsupported plot type\" in str(e):\n                return \"\\n\\n[unsupported chart]\\n\\n\"\n        except Exception:\n            # Catch any other exceptions that might occur\n            return \"\\n\\n[unsupported chart]\\n\\n\"\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_rss_converter.py",
    "content": "from defusedxml import minidom\nfrom xml.dom.minidom import Document, Element\nfrom typing import BinaryIO, Any, Union\nfrom bs4 import BeautifulSoup\n\nfrom ._markdownify import _CustomMarkdownify\nfrom .._stream_info import StreamInfo\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\n\nPRECISE_MIME_TYPE_PREFIXES = [\n    \"application/rss\",\n    \"application/rss+xml\",\n    \"application/atom\",\n    \"application/atom+xml\",\n]\n\nPRECISE_FILE_EXTENSIONS = [\".rss\", \".atom\"]\n\nCANDIDATE_MIME_TYPE_PREFIXES = [\n    \"text/xml\",\n    \"application/xml\",\n]\n\nCANDIDATE_FILE_EXTENSIONS = [\n    \".xml\",\n]\n\n\nclass RssConverter(DocumentConverter):\n    \"\"\"Convert RSS / Atom type to markdown\"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._kwargs = {}\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        # Check for precise mimetypes and file extensions\n        if extension in PRECISE_FILE_EXTENSIONS:\n            return True\n\n        for prefix in PRECISE_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        # Check for precise mimetypes and file extensions\n        if extension in CANDIDATE_FILE_EXTENSIONS:\n            return self._check_xml(file_stream)\n\n        for prefix in CANDIDATE_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return self._check_xml(file_stream)\n\n        return False\n\n    def _check_xml(self, file_stream: BinaryIO) -> bool:\n        cur_pos = file_stream.tell()\n        try:\n            doc = minidom.parse(file_stream)\n            return self._feed_type(doc) is not None\n        except BaseException as _:\n            pass\n        finally:\n            file_stream.seek(cur_pos)\n        return False\n\n    def _feed_type(self, doc: Any) -> str | None:\n        if doc.getElementsByTagName(\"rss\"):\n            return \"rss\"\n        elif doc.getElementsByTagName(\"feed\"):\n            root = doc.getElementsByTagName(\"feed\")[0]\n            if root.getElementsByTagName(\"entry\"):\n                # An Atom feed must have a root element of <feed> and at least one <entry>\n                return \"atom\"\n        return None\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        self._kwargs = kwargs\n        doc = minidom.parse(file_stream)\n        feed_type = self._feed_type(doc)\n\n        if feed_type == \"rss\":\n            return self._parse_rss_type(doc)\n        elif feed_type == \"atom\":\n            return self._parse_atom_type(doc)\n        else:\n            raise ValueError(\"Unknown feed type\")\n\n    def _parse_atom_type(self, doc: Document) -> DocumentConverterResult:\n        \"\"\"Parse the type of an Atom feed.\n\n        Returns None if the feed type is not recognized or something goes wrong.\n        \"\"\"\n        root = doc.getElementsByTagName(\"feed\")[0]\n        title = self._get_data_by_tag_name(root, \"title\")\n        subtitle = self._get_data_by_tag_name(root, \"subtitle\")\n        entries = root.getElementsByTagName(\"entry\")\n        md_text = f\"# {title}\\n\"\n        if subtitle:\n            md_text += f\"{subtitle}\\n\"\n        for entry in entries:\n            entry_title = self._get_data_by_tag_name(entry, \"title\")\n            entry_summary = self._get_data_by_tag_name(entry, \"summary\")\n            entry_updated = self._get_data_by_tag_name(entry, \"updated\")\n            entry_content = self._get_data_by_tag_name(entry, \"content\")\n\n            if entry_title:\n                md_text += f\"\\n## {entry_title}\\n\"\n            if entry_updated:\n                md_text += f\"Updated on: {entry_updated}\\n\"\n            if entry_summary:\n                md_text += self._parse_content(entry_summary)\n            if entry_content:\n                md_text += self._parse_content(entry_content)\n\n        return DocumentConverterResult(\n            markdown=md_text,\n            title=title,\n        )\n\n    def _parse_rss_type(self, doc: Document) -> DocumentConverterResult:\n        \"\"\"Parse the type of an RSS feed.\n\n        Returns None if the feed type is not recognized or something goes wrong.\n        \"\"\"\n        root = doc.getElementsByTagName(\"rss\")[0]\n        channel_list = root.getElementsByTagName(\"channel\")\n        if not channel_list:\n            raise ValueError(\"No channel found in RSS feed\")\n        channel = channel_list[0]\n        channel_title = self._get_data_by_tag_name(channel, \"title\")\n        channel_description = self._get_data_by_tag_name(channel, \"description\")\n        items = channel.getElementsByTagName(\"item\")\n        if channel_title:\n            md_text = f\"# {channel_title}\\n\"\n        if channel_description:\n            md_text += f\"{channel_description}\\n\"\n        for item in items:\n            title = self._get_data_by_tag_name(item, \"title\")\n            description = self._get_data_by_tag_name(item, \"description\")\n            pubDate = self._get_data_by_tag_name(item, \"pubDate\")\n            content = self._get_data_by_tag_name(item, \"content:encoded\")\n\n            if title:\n                md_text += f\"\\n## {title}\\n\"\n            if pubDate:\n                md_text += f\"Published on: {pubDate}\\n\"\n            if description:\n                md_text += self._parse_content(description)\n            if content:\n                md_text += self._parse_content(content)\n\n        return DocumentConverterResult(\n            markdown=md_text,\n            title=channel_title,\n        )\n\n    def _parse_content(self, content: str) -> str:\n        \"\"\"Parse the content of an RSS feed item\"\"\"\n        try:\n            # using bs4 because many RSS feeds have HTML-styled content\n            soup = BeautifulSoup(content, \"html.parser\")\n            return _CustomMarkdownify(**self._kwargs).convert_soup(soup)\n        except BaseException as _:\n            return content\n\n    def _get_data_by_tag_name(\n        self, element: Element, tag_name: str\n    ) -> Union[str, None]:\n        \"\"\"Get data from first child element with the given tag name.\n        Returns None when no such element is found.\n        \"\"\"\n        nodes = element.getElementsByTagName(tag_name)\n        if not nodes:\n            return None\n        fc = nodes[0].firstChild\n        if fc:\n            if hasattr(fc, \"data\"):\n                return fc.data\n        return None\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_transcribe_audio.py",
    "content": "import io\nimport sys\nfrom typing import BinaryIO\nfrom .._exceptions import MissingDependencyException\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_dependency_exc_info = None\ntry:\n    # Suppress some warnings on library import\n    import warnings\n\n    with warnings.catch_warnings():\n        warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n        warnings.filterwarnings(\"ignore\", category=SyntaxWarning)\n        import speech_recognition as sr\n        import pydub\nexcept ImportError:\n    # Preserve the error and stack trace for later\n    _dependency_exc_info = sys.exc_info()\n\n\ndef transcribe_audio(file_stream: BinaryIO, *, audio_format: str = \"wav\") -> str:\n    # Check for installed dependencies\n    if _dependency_exc_info is not None:\n        raise MissingDependencyException(\n            \"Speech transcription requires installing MarkItdown with the [audio-transcription] optional dependencies. E.g., `pip install markitdown[audio-transcription]` or `pip install markitdown[all]`\"\n        ) from _dependency_exc_info[\n            1\n        ].with_traceback(  # type: ignore[union-attr]\n            _dependency_exc_info[2]\n        )\n\n    if audio_format in [\"wav\", \"aiff\", \"flac\"]:\n        audio_source = file_stream\n    elif audio_format in [\"mp3\", \"mp4\"]:\n        audio_segment = pydub.AudioSegment.from_file(file_stream, format=audio_format)\n\n        audio_source = io.BytesIO()\n        audio_segment.export(audio_source, format=\"wav\")\n        audio_source.seek(0)\n    else:\n        raise ValueError(f\"Unsupported audio format: {audio_format}\")\n\n    recognizer = sr.Recognizer()\n    with sr.AudioFile(audio_source) as source:\n        audio = recognizer.record(source)\n        transcript = recognizer.recognize_google(audio).strip()\n        return \"[No speech detected]\" if transcript == \"\" else transcript\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_wikipedia_converter.py",
    "content": "import re\nimport bs4\nfrom typing import Any, BinaryIO\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom ._markdownify import _CustomMarkdownify\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/html\",\n    \"application/xhtml\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".html\",\n    \".htm\",\n]\n\n\nclass WikipediaConverter(DocumentConverter):\n    \"\"\"Handle Wikipedia pages separately, focusing only on the main document content.\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        \"\"\"\n        Make sure we're dealing with HTML content *from* Wikipedia.\n        \"\"\"\n\n        url = stream_info.url or \"\"\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if not re.search(r\"^https?:\\/\\/[a-zA-Z]{2,3}\\.wikipedia.org\\/\", url):\n            # Not a Wikipedia URL\n            return False\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        # Not HTML content\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Parse the stream\n        encoding = \"utf-8\" if stream_info.charset is None else stream_info.charset\n        soup = bs4.BeautifulSoup(file_stream, \"html.parser\", from_encoding=encoding)\n\n        # Remove javascript and style blocks\n        for script in soup([\"script\", \"style\"]):\n            script.extract()\n\n        # Print only the main content\n        body_elm = soup.find(\"div\", {\"id\": \"mw-content-text\"})\n        title_elm = soup.find(\"span\", {\"class\": \"mw-page-title-main\"})\n\n        webpage_text = \"\"\n        main_title = None if soup.title is None else soup.title.string\n\n        if body_elm:\n            # What's the title\n            if title_elm and isinstance(title_elm, bs4.Tag):\n                main_title = title_elm.string\n\n            # Convert the page\n            webpage_text = f\"# {main_title}\\n\\n\" + _CustomMarkdownify(\n                **kwargs\n            ).convert_soup(body_elm)\n        else:\n            webpage_text = _CustomMarkdownify(**kwargs).convert_soup(soup)\n\n        return DocumentConverterResult(\n            markdown=webpage_text,\n            title=main_title,\n        )\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_xlsx_converter.py",
    "content": "import sys\nfrom typing import BinaryIO, Any\nfrom ._html_converter import HtmlConverter\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._exceptions import MissingDependencyException, MISSING_DEPENDENCY_MESSAGE\nfrom .._stream_info import StreamInfo\n\n# Try loading optional (but in this case, required) dependencies\n# Save reporting of any exceptions for later\n_xlsx_dependency_exc_info = None\ntry:\n    import pandas as pd\n    import openpyxl  # noqa: F401\nexcept ImportError:\n    _xlsx_dependency_exc_info = sys.exc_info()\n\n_xls_dependency_exc_info = None\ntry:\n    import pandas as pd  # noqa: F811\n    import xlrd  # noqa: F401\nexcept ImportError:\n    _xls_dependency_exc_info = sys.exc_info()\n\nACCEPTED_XLSX_MIME_TYPE_PREFIXES = [\n    \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n]\nACCEPTED_XLSX_FILE_EXTENSIONS = [\".xlsx\"]\n\nACCEPTED_XLS_MIME_TYPE_PREFIXES = [\n    \"application/vnd.ms-excel\",\n    \"application/excel\",\n]\nACCEPTED_XLS_FILE_EXTENSIONS = [\".xls\"]\n\n\nclass XlsxConverter(DocumentConverter):\n    \"\"\"\n    Converts XLSX files to Markdown, with each sheet presented as a separate Markdown table.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_XLSX_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_XLSX_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Check the dependencies\n        if _xlsx_dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".xlsx\",\n                    feature=\"xlsx\",\n                )\n            ) from _xlsx_dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _xlsx_dependency_exc_info[2]\n            )\n\n        sheets = pd.read_excel(file_stream, sheet_name=None, engine=\"openpyxl\")\n        md_content = \"\"\n        for s in sheets:\n            md_content += f\"## {s}\\n\"\n            html_content = sheets[s].to_html(index=False)\n            md_content += (\n                self._html_converter.convert_string(\n                    html_content, **kwargs\n                ).markdown.strip()\n                + \"\\n\\n\"\n            )\n\n        return DocumentConverterResult(markdown=md_content.strip())\n\n\nclass XlsConverter(DocumentConverter):\n    \"\"\"\n    Converts XLS files to Markdown, with each sheet presented as a separate Markdown table.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_XLS_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_XLS_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Load the dependencies\n        if _xls_dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".xls\",\n                    feature=\"xls\",\n                )\n            ) from _xls_dependency_exc_info[\n                1\n            ].with_traceback(  # type: ignore[union-attr]\n                _xls_dependency_exc_info[2]\n            )\n\n        sheets = pd.read_excel(file_stream, sheet_name=None, engine=\"xlrd\")\n        md_content = \"\"\n        for s in sheets:\n            md_content += f\"## {s}\\n\"\n            html_content = sheets[s].to_html(index=False)\n            md_content += (\n                self._html_converter.convert_string(\n                    html_content, **kwargs\n                ).markdown.strip()\n                + \"\\n\\n\"\n            )\n\n        return DocumentConverterResult(markdown=md_content.strip())\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_youtube_converter.py",
    "content": "import json\nimport time\nimport re\nimport bs4\nfrom typing import Any, BinaryIO, Dict, List, Union\nfrom urllib.parse import parse_qs, urlparse, unquote\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\n\n# Optional YouTube transcription support\ntry:\n    # Suppress some warnings on library import\n    import warnings\n\n    with warnings.catch_warnings():\n        warnings.filterwarnings(\"ignore\", category=SyntaxWarning)\n        # Patch submitted upstream to fix the SyntaxWarning\n        from youtube_transcript_api import YouTubeTranscriptApi\n\n    IS_YOUTUBE_TRANSCRIPT_CAPABLE = True\nexcept ModuleNotFoundError:\n    IS_YOUTUBE_TRANSCRIPT_CAPABLE = False\n\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/html\",\n    \"application/xhtml\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\n    \".html\",\n    \".htm\",\n]\n\n\nclass YouTubeConverter(DocumentConverter):\n    \"\"\"Handle YouTube specially, focusing on the video title, description, and transcript.\"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        \"\"\"\n        Make sure we're dealing with HTML content *from* YouTube.\n        \"\"\"\n        url = stream_info.url or \"\"\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        url = unquote(url)\n        url = url.replace(r\"\\?\", \"?\").replace(r\"\\=\", \"=\")\n\n        if not url.startswith(\"https://www.youtube.com/watch?\"):\n            # Not a YouTube URL\n            return False\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        # Not HTML content\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        # Parse the stream\n        encoding = \"utf-8\" if stream_info.charset is None else stream_info.charset\n        soup = bs4.BeautifulSoup(file_stream, \"html.parser\", from_encoding=encoding)\n\n        # Read the meta tags\n        metadata: Dict[str, str] = {}\n\n        if soup.title and soup.title.string:\n            metadata[\"title\"] = soup.title.string\n\n        for meta in soup([\"meta\"]):\n            if not isinstance(meta, bs4.Tag):\n                continue\n\n            for a in meta.attrs:\n                if a in [\"itemprop\", \"property\", \"name\"]:\n                    key = str(meta.get(a, \"\"))\n                    content = str(meta.get(\"content\", \"\"))\n                    if key and content:  # Only add non-empty content\n                        metadata[key] = content\n                    break\n\n        # Try reading the description\n        try:\n            for script in soup([\"script\"]):\n                if not isinstance(script, bs4.Tag):\n                    continue\n                if not script.string:  # Skip empty scripts\n                    continue\n                content = script.string\n                if \"ytInitialData\" in content:\n                    match = re.search(r\"var ytInitialData = ({.*?});\", content)\n                    if match:\n                        data = json.loads(match.group(1))\n                        attrdesc = self._findKey(data, \"attributedDescriptionBodyText\")\n                        if attrdesc and isinstance(attrdesc, dict):\n                            metadata[\"description\"] = str(attrdesc.get(\"content\", \"\"))\n                    break\n        except Exception as e:\n            print(f\"Error extracting description: {e}\")\n            pass\n\n        # Start preparing the page\n        webpage_text = \"# YouTube\\n\"\n\n        title = self._get(metadata, [\"title\", \"og:title\", \"name\"])  # type: ignore\n        assert isinstance(title, str)\n\n        if title:\n            webpage_text += f\"\\n## {title}\\n\"\n\n        stats = \"\"\n        views = self._get(metadata, [\"interactionCount\"])  # type: ignore\n        if views:\n            stats += f\"- **Views:** {views}\\n\"\n\n        keywords = self._get(metadata, [\"keywords\"])  # type: ignore\n        if keywords:\n            stats += f\"- **Keywords:** {keywords}\\n\"\n\n        runtime = self._get(metadata, [\"duration\"])  # type: ignore\n        if runtime:\n            stats += f\"- **Runtime:** {runtime}\\n\"\n\n        if len(stats) > 0:\n            webpage_text += f\"\\n### Video Metadata\\n{stats}\\n\"\n\n        description = self._get(metadata, [\"description\", \"og:description\"])  # type: ignore\n        if description:\n            webpage_text += f\"\\n### Description\\n{description}\\n\"\n\n        if IS_YOUTUBE_TRANSCRIPT_CAPABLE:\n            ytt_api = YouTubeTranscriptApi()\n            transcript_text = \"\"\n            parsed_url = urlparse(stream_info.url)  # type: ignore\n            params = parse_qs(parsed_url.query)  # type: ignore\n            if \"v\" in params and params[\"v\"][0]:\n                video_id = str(params[\"v\"][0])\n                transcript_list = ytt_api.list(video_id)\n                languages = [\"en\"]\n                for transcript in transcript_list:\n                    languages.append(transcript.language_code)\n                    break\n                try:\n                    youtube_transcript_languages = kwargs.get(\n                        \"youtube_transcript_languages\", languages\n                    )\n                    # Retry the transcript fetching operation\n                    transcript = self._retry_operation(\n                        lambda: ytt_api.fetch(\n                            video_id, languages=youtube_transcript_languages\n                        ),\n                        retries=3,  # Retry 3 times\n                        delay=2,  # 2 seconds delay between retries\n                    )\n\n                    if transcript:\n                        transcript_text = \" \".join(\n                            [part.text for part in transcript]\n                        )  # type: ignore\n                except Exception as e:\n                    # No transcript available\n                    if len(languages) == 1:\n                        print(f\"Error fetching transcript: {e}\")\n                    else:\n                        # Translate transcript into first kwarg\n                        transcript = (\n                            transcript_list.find_transcript(languages)\n                            .translate(youtube_transcript_languages[0])\n                            .fetch()\n                        )\n                        transcript_text = \" \".join([part.text for part in transcript])\n            if transcript_text:\n                webpage_text += f\"\\n### Transcript\\n{transcript_text}\\n\"\n\n        title = title if title else (soup.title.string if soup.title else \"\")\n        assert isinstance(title, str)\n\n        return DocumentConverterResult(\n            markdown=webpage_text,\n            title=title,\n        )\n\n    def _get(\n        self,\n        metadata: Dict[str, str],\n        keys: List[str],\n        default: Union[str, None] = None,\n    ) -> Union[str, None]:\n        \"\"\"Get first non-empty value from metadata matching given keys.\"\"\"\n        for k in keys:\n            if k in metadata:\n                return metadata[k]\n        return default\n\n    def _findKey(self, json: Any, key: str) -> Union[str, None]:  # TODO: Fix json type\n        \"\"\"Recursively search for a key in nested dictionary/list structures.\"\"\"\n        if isinstance(json, list):\n            for elm in json:\n                ret = self._findKey(elm, key)\n                if ret is not None:\n                    return ret\n        elif isinstance(json, dict):\n            for k, v in json.items():\n                if k == key:\n                    return json[k]\n                if result := self._findKey(v, key):\n                    return result\n        return None\n\n    def _retry_operation(self, operation, retries=3, delay=2):\n        \"\"\"Retries the operation if it fails.\"\"\"\n        attempt = 0\n        while attempt < retries:\n            try:\n                return operation()  # Attempt the operation\n            except Exception as e:\n                print(f\"Attempt {attempt + 1} failed: {e}\")\n                if attempt < retries - 1:\n                    time.sleep(delay)  # Wait before retrying\n                attempt += 1\n        # If all attempts fail, raise the last exception\n        raise Exception(f\"Operation failed after {retries} attempts.\")\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/converters/_zip_converter.py",
    "content": "import zipfile\nimport io\nimport os\n\nfrom typing import BinaryIO, Any, TYPE_CHECKING\n\nfrom .._base_converter import DocumentConverter, DocumentConverterResult\nfrom .._stream_info import StreamInfo\nfrom .._exceptions import UnsupportedFormatException, FileConversionException\n\n# Break otherwise circular import for type hinting\nif TYPE_CHECKING:\n    from .._markitdown import MarkItDown\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"application/zip\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".zip\"]\n\n\nclass ZipConverter(DocumentConverter):\n    \"\"\"Converts ZIP files to markdown by extracting and converting all contained files.\n\n    The converter extracts the ZIP contents to a temporary directory, processes each file\n    using appropriate converters based on file extensions, and then combines the results\n    into a single markdown document. The temporary directory is cleaned up after processing.\n\n    Example output format:\n    ```markdown\n    Content from the zip file `example.zip`:\n\n    ## File: docs/readme.txt\n\n    This is the content of readme.txt\n    Multiple lines are preserved\n\n    ## File: images/example.jpg\n\n    ImageSize: 1920x1080\n    DateTimeOriginal: 2024-02-15 14:30:00\n    Description: A beautiful landscape photo\n\n    ## File: data/report.xlsx\n\n    ## Sheet1\n    | Column1 | Column2 | Column3 |\n    |---------|---------|---------|\n    | data1   | data2   | data3   |\n    | data4   | data5   | data6   |\n    ```\n\n    Key features:\n    - Maintains original file structure in headings\n    - Processes nested files recursively\n    - Uses appropriate converters for each file type\n    - Preserves formatting of converted content\n    - Cleans up temporary files after processing\n    \"\"\"\n\n    def __init__(\n        self,\n        *,\n        markitdown: \"MarkItDown\",\n    ):\n        super().__init__()\n        self._markitdown = markitdown\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,  # Options to pass to the converter\n    ) -> DocumentConverterResult:\n        file_path = stream_info.url or stream_info.local_path or stream_info.filename\n        md_content = f\"Content from the zip file `{file_path}`:\\n\\n\"\n\n        with zipfile.ZipFile(file_stream, \"r\") as zipObj:\n            for name in zipObj.namelist():\n                try:\n                    z_file_stream = io.BytesIO(zipObj.read(name))\n                    z_file_stream_info = StreamInfo(\n                        extension=os.path.splitext(name)[1],\n                        filename=os.path.basename(name),\n                    )\n                    result = self._markitdown.convert_stream(\n                        stream=z_file_stream,\n                        stream_info=z_file_stream_info,\n                    )\n                    if result is not None:\n                        md_content += f\"## File: {name}\\n\\n\"\n                        md_content += result.markdown + \"\\n\\n\"\n                except UnsupportedFormatException:\n                    pass\n                except FileConversionException:\n                    pass\n\n        return DocumentConverterResult(markdown=md_content.strip())\n"
  },
  {
    "path": "packages/markitdown/src/markitdown/py.typed",
    "content": ""
  },
  {
    "path": "packages/markitdown/tests/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n"
  },
  {
    "path": "packages/markitdown/tests/_test_vectors.py",
    "content": "import dataclasses\nfrom typing import List\n\n\n@dataclasses.dataclass(frozen=True, kw_only=True)\nclass FileTestVector(object):\n    filename: str\n    mimetype: str | None\n    charset: str | None\n    url: str | None\n    must_include: List[str]\n    must_not_include: List[str]\n\n\nGENERAL_TEST_VECTORS = [\n    FileTestVector(\n        filename=\"test.docx\",\n        mimetype=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"314b0a30-5b04-470b-b9f7-eed2c2bec74a\",\n            \"49e168b7-d2ae-407f-a055-2167576f39a1\",\n            \"## d666f1f7-46cb-42bd-9a39-9a39cf2a509f\",\n            \"# Abstract\",\n            \"# Introduction\",\n            \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n            \"data:image/png;base64...\",\n        ],\n        must_not_include=[\n            \"data:image/png;base64,iVBORw0KGgoAAAANSU\",\n        ],\n    ),\n    FileTestVector(\n        filename=\"test.xlsx\",\n        mimetype=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"## 09060124-b5e7-4717-9d07-3c046eb\",\n            \"6ff4173b-42a5-4784-9b19-f49caff4d93d\",\n            \"affc7dad-52dc-4b98-9b5d-51e65d8a8ad0\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test.xls\",\n        mimetype=\"application/vnd.ms-excel\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"## 09060124-b5e7-4717-9d07-3c046eb\",\n            \"6ff4173b-42a5-4784-9b19-f49caff4d93d\",\n            \"affc7dad-52dc-4b98-9b5d-51e65d8a8ad0\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test.pptx\",\n        mimetype=\"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"2cdda5c8-e50e-4db4-b5f0-9722a649f455\",\n            \"04191ea8-5c73-4215-a1d3-1cfb43aaaf12\",\n            \"44bf7d06-5e7a-4a40-a2e1-a2e42ef28c8a\",\n            \"1b92870d-e3b5-4e65-8153-919f4ff45592\",\n            \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n            \"a3f6004b-6f4f-4ea8-bee3-3741f4dc385f\",  # chart title\n            \"2003\",  # chart value\n            \"![This phrase of the caption is Human-written.](Picture4.jpg)\",\n        ],\n        must_not_include=[\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE\"],\n    ),\n    FileTestVector(\n        filename=\"test_outlook_msg.msg\",\n        mimetype=\"application/vnd.ms-outlook\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"# Email Message\",\n            \"**From:** test.sender@example.com\",\n            \"**To:** test.recipient@example.com\",\n            \"**Subject:** Test Email Message\",\n            \"## Content\",\n            \"This is the body of the test email message\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test.pdf\",\n        mimetype=\"application/pdf\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"While there is contemporaneous exploration of multi-agent approaches\"\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test_blog.html\",\n        mimetype=\"text/html\",\n        charset=\"utf-8\",\n        url=\"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\",\n        must_include=[\n            \"Large language models (LLMs) are powerful tools that can generate natural language texts for various applications, such as chatbots, summarization, translation, and more. GPT-4 is currently the state of the art LLM in the world. Is model selection irrelevant? What about inference parameters?\",\n            \"an example where high cost can easily prevent a generic complex\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test_wikipedia.html\",\n        mimetype=\"text/html\",\n        charset=\"utf-8\",\n        url=\"https://en.wikipedia.org/wiki/Microsoft\",\n        must_include=[\n            \"Microsoft entered the operating system (OS) business in 1980 with its own version of [Unix]\",\n            'Microsoft was founded by [Bill Gates](/wiki/Bill_Gates \"Bill Gates\")',\n        ],\n        must_not_include=[\n            \"You are encouraged to create an account and log in\",\n            \"154 languages\",\n            \"move to sidebar\",\n        ],\n    ),\n    FileTestVector(\n        filename=\"test_serp.html\",\n        mimetype=\"text/html\",\n        charset=\"utf-8\",\n        url=\"https://www.bing.com/search?q=microsoft+wikipedia\",\n        must_include=[\n            \"](https://en.wikipedia.org/wiki/Microsoft\",\n            \"Microsoft Corporation is **an American multinational corporation and technology company headquartered** in Redmond\",\n            \"1995–2007: Foray into the Web, Windows 95, Windows XP, and Xbox\",\n        ],\n        must_not_include=[\n            \"https://www.bing.com/ck/a?!&&p=\",\n            \"data:image/svg+xml,%3Csvg%20width%3D\",\n        ],\n    ),\n    FileTestVector(\n        filename=\"test_mskanji.csv\",\n        mimetype=\"text/csv\",\n        charset=\"cp932\",\n        url=None,\n        must_include=[\n            \"| 名前 | 年齢 | 住所 |\",\n            \"| --- | --- | --- |\",\n            \"| 佐藤太郎 | 30 | 東京 |\",\n            \"| 三木英子 | 25 | 大阪 |\",\n            \"| 髙橋淳 | 35 | 名古屋 |\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test.json\",\n        mimetype=\"application/json\",\n        charset=\"ascii\",\n        url=None,\n        must_include=[\n            \"5b64c88c-b3c3-4510-bcb8-da0b200602d8\",\n            \"9700dc99-6685-40b4-9a3a-5e406dcb37f3\",\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test_rss.xml\",\n        mimetype=\"text/xml\",\n        charset=\"utf-8\",\n        url=None,\n        must_include=[\n            \"# The Official Microsoft Blog\",\n            \"## Ignite 2024: Why nearly 70% of the Fortune 500 now use Microsoft 365 Copilot\",\n            \"In the case of AI, it is absolutely true that the industry is moving incredibly fast\",\n        ],\n        must_not_include=[\"<rss\", \"<feed\"],\n    ),\n    FileTestVector(\n        filename=\"test_notebook.ipynb\",\n        mimetype=\"application/json\",\n        charset=\"ascii\",\n        url=None,\n        must_include=[\n            \"# Test Notebook\",\n            \"```python\",\n            'print(\"markitdown\")',\n            \"```\",\n            \"## Code Cell Below\",\n        ],\n        must_not_include=[\n            \"nbformat\",\n            \"nbformat_minor\",\n        ],\n    ),\n    FileTestVector(\n        filename=\"test_files.zip\",\n        mimetype=\"application/zip\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"314b0a30-5b04-470b-b9f7-eed2c2bec74a\",\n            \"49e168b7-d2ae-407f-a055-2167576f39a1\",\n            \"## d666f1f7-46cb-42bd-9a39-9a39cf2a509f\",\n            \"# Abstract\",\n            \"# Introduction\",\n            \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n            \"2cdda5c8-e50e-4db4-b5f0-9722a649f455\",\n            \"04191ea8-5c73-4215-a1d3-1cfb43aaaf12\",\n            \"44bf7d06-5e7a-4a40-a2e1-a2e42ef28c8a\",\n            \"1b92870d-e3b5-4e65-8153-919f4ff45592\",\n            \"## 09060124-b5e7-4717-9d07-3c046eb\",\n            \"6ff4173b-42a5-4784-9b19-f49caff4d93d\",\n            \"affc7dad-52dc-4b98-9b5d-51e65d8a8ad0\",\n            \"Microsoft entered the operating system (OS) business in 1980 with its own version of [Unix]\",\n            'Microsoft was founded by [Bill Gates](/wiki/Bill_Gates \"Bill Gates\")',\n        ],\n        must_not_include=[],\n    ),\n    FileTestVector(\n        filename=\"test.epub\",\n        mimetype=\"application/epub+zip\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"**Authors:** Test Author\",\n            \"A test EPUB document for MarkItDown testing\",\n            \"# Chapter 1: Test Content\",\n            \"This is a **test** paragraph with some formatting\",\n            \"* A bullet point\",\n            \"* Another point\",\n            \"# Chapter 2: More Content\",\n            \"*different* style\",\n            \"> This is a blockquote for testing\",\n        ],\n        must_not_include=[],\n    ),\n]\n\n\nDATA_URI_TEST_VECTORS = [\n    FileTestVector(\n        filename=\"test.docx\",\n        mimetype=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"314b0a30-5b04-470b-b9f7-eed2c2bec74a\",\n            \"49e168b7-d2ae-407f-a055-2167576f39a1\",\n            \"## d666f1f7-46cb-42bd-9a39-9a39cf2a509f\",\n            \"# Abstract\",\n            \"# Introduction\",\n            \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n            \"data:image/png;base64,iVBORw0KGgoAAAANSU\",\n        ],\n        must_not_include=[\n            \"data:image/png;base64...\",\n        ],\n    ),\n    FileTestVector(\n        filename=\"test.pptx\",\n        mimetype=\"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n        charset=None,\n        url=None,\n        must_include=[\n            \"2cdda5c8-e50e-4db4-b5f0-9722a649f455\",\n            \"04191ea8-5c73-4215-a1d3-1cfb43aaaf12\",\n            \"44bf7d06-5e7a-4a40-a2e1-a2e42ef28c8a\",\n            \"1b92870d-e3b5-4e65-8153-919f4ff45592\",\n            \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n            \"a3f6004b-6f4f-4ea8-bee3-3741f4dc385f\",  # chart title\n            \"2003\",  # chart value\n            \"![This phrase of the caption is Human-written.]\",  # image caption\n            \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE\",\n        ],\n        must_not_include=[\n            \"![This phrase of the caption is Human-written.](Picture4.jpg)\",\n        ],\n    ),\n]\n"
  },
  {
    "path": "packages/markitdown/tests/test_cli_misc.py",
    "content": "#!/usr/bin/env python3 -m pytest\nimport subprocess\nfrom markitdown import __version__\n\n# This file contains CLI tests that are not directly tested by the FileTestVectors.\n# This includes things like help messages, version numbers, and invalid flags.\n\n\ndef test_version() -> None:\n    result = subprocess.run(\n        [\"python\", \"-m\", \"markitdown\", \"--version\"], capture_output=True, text=True\n    )\n\n    assert result.returncode == 0, f\"CLI exited with error: {result.stderr}\"\n    assert __version__ in result.stdout, f\"Version not found in output: {result.stdout}\"\n\n\ndef test_invalid_flag() -> None:\n    result = subprocess.run(\n        [\"python\", \"-m\", \"markitdown\", \"--foobar\"], capture_output=True, text=True\n    )\n\n    assert result.returncode != 0, f\"CLI exited with error: {result.stderr}\"\n    assert (\n        \"unrecognized arguments\" in result.stderr\n    ), \"Expected 'unrecognized arguments' to appear in STDERR\"\n    assert \"SYNTAX\" in result.stderr, \"Expected 'SYNTAX' to appear in STDERR\"\n\n\nif __name__ == \"__main__\":\n    \"\"\"Runs this file's tests from the command line.\"\"\"\n    test_version()\n    test_invalid_flag()\n    print(\"All tests passed!\")\n"
  },
  {
    "path": "packages/markitdown/tests/test_cli_vectors.py",
    "content": "#!/usr/bin/env python3 -m pytest\nimport os\nimport time\nimport pytest\nimport subprocess\nimport locale\nfrom typing import List\n\nif __name__ == \"__main__\":\n    from _test_vectors import (\n        GENERAL_TEST_VECTORS,\n        DATA_URI_TEST_VECTORS,\n        FileTestVector,\n    )\nelse:\n    from ._test_vectors import (\n        GENERAL_TEST_VECTORS,\n        DATA_URI_TEST_VECTORS,\n        FileTestVector,\n    )\n\nskip_remote = (\n    True if os.environ.get(\"GITHUB_ACTIONS\") else False\n)  # Don't run these tests in CI\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\nTEST_FILES_URL = \"https://raw.githubusercontent.com/microsoft/markitdown/refs/heads/main/packages/markitdown/tests/test_files\"\n\n\n# Prepare CLI test vectors (remove vectors that require mockig the url)\nCLI_TEST_VECTORS: List[FileTestVector] = []\nfor test_vector in GENERAL_TEST_VECTORS:\n    if test_vector.url is not None:\n        continue\n    CLI_TEST_VECTORS.append(test_vector)\n\n\n@pytest.fixture(scope=\"session\")\ndef shared_tmp_dir(tmp_path_factory):\n    return tmp_path_factory.mktemp(\"pytest_tmp\")\n\n\n@pytest.mark.parametrize(\"test_vector\", CLI_TEST_VECTORS)\ndef test_output_to_stdout(shared_tmp_dir, test_vector) -> None:\n    \"\"\"Test that the CLI outputs to stdout correctly.\"\"\"\n\n    result = subprocess.run(\n        [\n            \"python\",\n            \"-m\",\n            \"markitdown\",\n            os.path.join(TEST_FILES_DIR, test_vector.filename),\n        ],\n        capture_output=True,\n        text=True,\n    )\n\n    assert result.returncode == 0, f\"CLI exited with error: {result.stderr}\"\n    for test_string in test_vector.must_include:\n        assert test_string in result.stdout\n    for test_string in test_vector.must_not_include:\n        assert test_string not in result.stdout\n\n\n@pytest.mark.parametrize(\"test_vector\", CLI_TEST_VECTORS)\ndef test_output_to_file(shared_tmp_dir, test_vector) -> None:\n    \"\"\"Test that the CLI outputs to a file correctly.\"\"\"\n\n    output_file = os.path.join(shared_tmp_dir, test_vector.filename + \".output\")\n    result = subprocess.run(\n        [\n            \"python\",\n            \"-m\",\n            \"markitdown\",\n            \"-o\",\n            output_file,\n            os.path.join(TEST_FILES_DIR, test_vector.filename),\n        ],\n        capture_output=True,\n        text=True,\n    )\n\n    assert result.returncode == 0, f\"CLI exited with error: {result.stderr}\"\n    assert os.path.exists(output_file), f\"Output file not created: {output_file}\"\n\n    with open(output_file, \"r\") as f:\n        output_data = f.read()\n        for test_string in test_vector.must_include:\n            assert test_string in output_data\n        for test_string in test_vector.must_not_include:\n            assert test_string not in output_data\n\n    os.remove(output_file)\n    assert not os.path.exists(output_file), f\"Output file not deleted: {output_file}\"\n\n\n@pytest.mark.parametrize(\"test_vector\", CLI_TEST_VECTORS)\ndef test_input_from_stdin_without_hints(shared_tmp_dir, test_vector) -> None:\n    \"\"\"Test that the CLI readds from stdin correctly.\"\"\"\n\n    test_input = b\"\"\n    with open(os.path.join(TEST_FILES_DIR, test_vector.filename), \"rb\") as stream:\n        test_input = stream.read()\n\n    result = subprocess.run(\n        [\n            \"python\",\n            \"-m\",\n            \"markitdown\",\n            os.path.join(TEST_FILES_DIR, test_vector.filename),\n        ],\n        input=test_input,\n        capture_output=True,\n        text=False,\n    )\n\n    stdout = result.stdout.decode(locale.getpreferredencoding())\n    assert (\n        result.returncode == 0\n    ), f\"CLI exited with error: {result.stderr.decode('utf-8')}\"\n    for test_string in test_vector.must_include:\n        assert test_string in stdout\n    for test_string in test_vector.must_not_include:\n        assert test_string not in stdout\n\n\n@pytest.mark.skipif(\n    skip_remote,\n    reason=\"do not run tests that query external urls\",\n)\n@pytest.mark.parametrize(\"test_vector\", CLI_TEST_VECTORS)\ndef test_convert_url(shared_tmp_dir, test_vector):\n    \"\"\"Test the conversion of a stream with no stream info.\"\"\"\n    # Note: tmp_dir is not used here, but is needed to match the signature\n\n    time.sleep(1)  # Ensure we don't hit rate limits\n    result = subprocess.run(\n        [\"python\", \"-m\", \"markitdown\", TEST_FILES_URL + \"/\" + test_vector.filename],\n        capture_output=True,\n        text=False,\n    )\n\n    stdout = result.stdout.decode(locale.getpreferredencoding())\n    assert result.returncode == 0, f\"CLI exited with error: {result.stderr}\"\n    for test_string in test_vector.must_include:\n        assert test_string in stdout\n    for test_string in test_vector.must_not_include:\n        assert test_string not in stdout\n\n\n@pytest.mark.parametrize(\"test_vector\", DATA_URI_TEST_VECTORS)\ndef test_output_to_file_with_data_uris(shared_tmp_dir, test_vector) -> None:\n    \"\"\"Test CLI functionality when keep_data_uris is enabled\"\"\"\n\n    output_file = os.path.join(shared_tmp_dir, test_vector.filename + \".output\")\n    result = subprocess.run(\n        [\n            \"python\",\n            \"-m\",\n            \"markitdown\",\n            \"--keep-data-uris\",\n            \"-o\",\n            output_file,\n            os.path.join(TEST_FILES_DIR, test_vector.filename),\n        ],\n        capture_output=True,\n        text=True,\n    )\n\n    assert result.returncode == 0, f\"CLI exited with error: {result.stderr}\"\n    assert os.path.exists(output_file), f\"Output file not created: {output_file}\"\n\n    with open(output_file, \"r\") as f:\n        output_data = f.read()\n        for test_string in test_vector.must_include:\n            assert test_string in output_data\n        for test_string in test_vector.must_not_include:\n            assert test_string not in output_data\n\n    os.remove(output_file)\n    assert not os.path.exists(output_file), f\"Output file not deleted: {output_file}\"\n\n\nif __name__ == \"__main__\":\n    import tempfile\n\n    \"\"\"Runs this file's tests from the command line.\"\"\"\n\n    with tempfile.TemporaryDirectory() as tmp_dir:\n        # General tests\n        for test_function in [\n            test_output_to_stdout,\n            test_output_to_file,\n            test_input_from_stdin_without_hints,\n            test_convert_url,\n        ]:\n            for test_vector in CLI_TEST_VECTORS:\n                print(\n                    f\"Running {test_function.__name__} on {test_vector.filename}...\",\n                    end=\"\",\n                )\n                test_function(tmp_dir, test_vector)\n                print(\"OK\")\n\n        # Data URI tests\n        for test_function in [\n            test_output_to_file_with_data_uris,\n        ]:\n            for test_vector in DATA_URI_TEST_VECTORS:\n                print(\n                    f\"Running {test_function.__name__} on {test_vector.filename}...\",\n                    end=\"\",\n                )\n                test_function(tmp_dir, test_vector)\n                print(\"OK\")\n\n    print(\"All tests passed!\")\n"
  },
  {
    "path": "packages/markitdown/tests/test_docintel_html.py",
    "content": "import io\nfrom markitdown.converters._doc_intel_converter import (\n    DocumentIntelligenceConverter,\n    DocumentIntelligenceFileType,\n)\nfrom markitdown._stream_info import StreamInfo\n\n\ndef _make_converter(file_types):\n    conv = DocumentIntelligenceConverter.__new__(DocumentIntelligenceConverter)\n    conv._file_types = file_types\n    return conv\n\n\ndef test_docintel_accepts_html_extension():\n    conv = _make_converter([DocumentIntelligenceFileType.HTML])\n    stream_info = StreamInfo(mimetype=None, extension=\".html\")\n    assert conv.accepts(io.BytesIO(b\"\"), stream_info)\n\n\ndef test_docintel_accepts_html_mimetype():\n    conv = _make_converter([DocumentIntelligenceFileType.HTML])\n    stream_info = StreamInfo(mimetype=\"text/html\", extension=None)\n    assert conv.accepts(io.BytesIO(b\"\"), stream_info)\n    stream_info = StreamInfo(mimetype=\"application/xhtml+xml\", extension=None)\n    assert conv.accepts(io.BytesIO(b\"\"), stream_info)\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/MEDRPT-2024-PAT-3847_medical_report_scan.md",
    "content": ""
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/RECEIPT-2024-TXN-98765_retail_purchase.md",
    "content": "TECHMART ELECTRONICS\n4567 Innovation Blvd\nSan Francisco, CA 94103\n(415) 555-0199\n\n===================================\n\nStore #0342 - Downtown SF\n11/23/2024 14:32:18 PST\nTXN: TXN-98765-2024\nCashier: Emily Rodriguez\nRegister: POS-07\n\n-----------------------------------\n\nWireless Noise-Cancelling\nHeadphones - Premium Black\nAUDIO-5521 1 @ $349.99\nMember Discount $-50.00\n$299.99\nUSB-C Hub 7-in-1 Adapter\nwith HDMI & Ethernet\nACC-8834 2 @ $79.99\n$159.98\nPortable SSD 2TB\nThunderbolt 3 Compatible\nSTOR-2241 1 @ $289.00\nMember Discount $-29.00\n$260.00\nErgonomic Wireless Mouse\nRechargeable Battery\nACC-9012 1 @ $59.99\n$59.99\nScreen Cleaning Kit\nProfessional Grade\nCARE-1156 3 @ $12.99\n$38.97\nHDMI 2.1 Cable 6ft\n8K Resolution Support\nCABLE-7789 2 @ $24.99\nMember Discount $-5.00\n$44.98\n-----------------------------------\n\nSUBTOTAL $863.91\nMember Discount (15%)-$84.00\nSales Tax (8.5%) $66.23\nRewards Applied -$25.00\n===================================\nTOTAL $821.14\n===================================\n\nPAYMENT METHOD\nVisa Card ending in 4782\nAuth: 847392\nRef: REF-20241123-98765\n\n-----------------------------------\n\nREWARDS MEMBER\nSarah Mitchell\nID: TM-447821\nPoints Earned: 821\nTotal Points: 3,247\nNext Reward: $50 gift card\nat 5,000 pts (1,753 to go)\n\n-----------------------------------\n\nRETURN POLICY\nReturns within 30 days\nReceipt required\nElectronics must be unopened\n\n*TXN98765202411231432*\n\nThank you for shopping!\nwww.techmart.example.com\n\n===================================\n\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/REPAIR-2022-INV-001_multipage.md",
    "content": "ZAVA AUTO REPAIR\nCertified Collision Repair\n123 Main Street, Redmond, WA 98052\nPhone: (425) 000-0000\nPreliminary Estimate (ID: EST-1008)\n| Customer Information |                     |     | Vehicle Information |                   |\n| -------------------- | ------------------- | --- | ------------------- | ----------------- |\n| Insured name         | Gabriel Diaz        |     | Year                | 2022              |\n| Claim #              | SF-1008             |     | Make                | Jeep              |\n| Policy #             | POL-2022-555        |     | Model               | Grand Cherokee    |\n| Phone                | (425) 111-1111      |     | Trim                | Limited           |\n| Email                | gabriel@contoso.com |     | VIN                 | 1C4RJFBG2NC123456 |\n|                      |                     |     | Color               | White             |\n|                      |                     |     | Odometer            | 9,800             |\n| Repair Order #       | RO-20221108         |     | Estimator           | Ellis Turner      |\nEstimate Totals\n|                  |     | Hours | Rate | Cost  |\n| ---------------- | --- | ----- | ---- | ----- |\n| Parts            |     |       |      | 2,100 |\n| Body Labor       |     | 2     | 150  | 300   |\n| Paint Labor      |     | 1.5   | 150  | 225   |\n| Mechanical Labor |     | -     | -    | -     |\nSupplies\n|               | Paint Supplies           |     |        | 60     |\n| ------------- | ------------------------ | --- | ------ | ------ |\n|               | Body Supplies            |     |        | 30     |\n| Other Charges |                          |     |        | 15     |\n| Subtotal      |                          |     |        | 2,730  |\n| Sales Tax     |                          |     | 10.20% | 278.46 |\n| GRAND TOTAL   |                          |     |        | 5,738  |\n| Note          | Minor rear bumper repair |     |        |        |\nThis is a preliminary estimate for the visible damage of the vehicle. Additional damage / repairs / parts may be found\nafter the vehicle has been disassembled and damaged parts have been removed. Suspension damages may be\npresent, but can not be determined until an alignment on the vehicle has been done. Parts Prices may vary due to\nmodels and vehicle maker price updates. Please be advised if vehicle owner elects to have vehicle sent to service for\nany mechanical concerns, ALL service departments charge a vehicle diagnostic charge. If the mechanical concern is\ndeemed not related to an insurance claim, vehicle owner will be reponsible for charges.\n\nZAVA AUTO REPAIR\nCertified Collision Repair\n123 Main Street, Redmond, WA 98052\nPhone: (425) 000-0000\nPreliminary Estimate (ID: EST-1008)\nCustomer Information Vehicle Information\n| Insured name   | Bruce Wayne                |     | Year      | 2025         |\n| -------------- | -------------------------- | --- | --------- | ------------ |\n| Claim #        |                            | 999 | Make      | Batman       |\n| Policy #       | IM-BATMAN                  |     | Model     | Batmobile    |\n| Phone          | (416) 555-1234             |     | Trim      | Limited      |\n| Email          | batman@wayneindustries.com |     | VIN       | XXX          |\n|                |                            |     | Color     | Black        |\n|                |                            |     | Odometer  | 1            |\n| Repair Order # | RO-20221108                |     | Estimator | Ellis Turner |\nEstimate Totals\n|                  |     | Hours | Rate | Cost   |\n| ---------------- | --- | ----- | ---- | ------ |\n| Parts            |     |       |      | 99,999 |\n| Body Labor       |     | 2     | 150  | 300    |\n| Paint Labor      |     | 1.5   | 150  | 225    |\n| Mechanical Labor |     | -     | -    | -      |\nSupplies\n|               | Paint Supplies           |     |        | 60        |\n| ------------- | ------------------------ | --- | ------ | --------- |\n|               | Body Supplies            |     |        | 30        |\n| Other Charges |                          |     |        | 15        |\n| Subtotal      |                          |     |        | 100,629   |\n| Sales Tax     |                          |     | 10.20% | 10264.158 |\n| GRAND TOTAL   |                          |     |        | 211,522   |\n| Note          | Minor rear bumper repair |     |        |           |\n\nThis is a preliminary estimate for the visible damage of the vehicle. Additional damage / repairs / parts may be found\nafter the vehicle has been disassembled and damaged parts have been removed. Suspension damages may be\npresent, but can not be determined until an alignment on the vehicle has been done. Parts Prices may vary due to\nmodels and vehicle maker price updates. Please be advised if vehicle owner elects to have vehicle sent to service for\nany mechanical concerns, ALL service departments charge a vehicle diagnostic charge. If the mechanical concern is\ndeemed not related to an insurance claim, vehicle owner will be reponsible for charges."
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/SPARSE-2024-INV-1234_borderless_table.md",
    "content": "INVENTORY RECONCILIATION REPORT\nReport ID: SPARSE-2024-INV-1234\nWarehouse: Distribution Center East\nReport Date: 2024-11-15\nPrepared By: Sarah Martinez\n| Product Code | Location | Expected | Actual | Variance | Status   |\n| ------------ | -------- | -------- | ------ | -------- | -------- |\n| SKU-8847     | A-12     | 450      |        |          |          |\n|              | B-07     |          | 289    | -23      |          |\n| SKU-9201     |          | 780      | 778    |          | OK       |\n|              | C-15     |          |        | +15      |          |\n| SKU-4563     | D-22     |          | 156    |          | CRITICAL |\n|              |          | 180      |        | -24      |          |\n| SKU-7728     | A-08     | 920      |        |          |          |\n|              |          |          | 935    | +15      | OK       |\nVariance Analysis:\nSummary Statistics:\nTotal Variance Cost: $4,287.50\nCritical Items: 1\nOverall Accuracy: 97.2%\nDetailed Analysis by Category:\nThe inventory reconciliation reveals several key findings. The primary variance driver is SKU-4563,\nwhich shows a -24 unit discrepancy requiring immediate investigation. Location B-07 handling of\nSKU-8847 also demonstrates significant variance. Cross-location verification protocols should be\n\nreviewed to prevent future discrepancies. The overall accuracy rate of 97.2% meets our target\nthreshold, but critical items require expedited resolution to maintain operational efficiency.\nExtended Inventory Review:\n| Product Code | Category    | Unit Cost | Total Value | Last Audit | Notes      |\n| ------------ | ----------- | --------- | ----------- | ---------- | ---------- |\n| SKU-8847     | Electronics | $45.00    | $13,005.00  | 2024-10-15 |            |\n| SKU-9201     | Hardware    | $32.50    | $25,285.00  | 2024-10-22 | Verified   |\n| SKU-4563     | Software    | $120.00   | $18,720.00  |            | Critical   |\n| SKU-7728     | Accessories | $15.75    | $14,726.25  | 2024-11-01 |            |\n| SKU-3345     | Electronics | $67.00    | $22,445.00  | 2024-10-18 |            |\n| SKU-5512     | Hardware    | $89.00    | $31,150.00  |            | Pending    |\n| SKU-6678     | Software    | $200.00   | $42,000.00  | 2024-10-25 | High Value |\n| SKU-7789     | Accessories | $8.50     | $5,950.00   | 2024-11-05 |            |\n| SKU-2234     | Electronics | $125.00   | $35,000.00  |            |            |\n| SKU-1123     | Hardware    | $55.00    | $27,500.00  | 2024-10-30 | Verified   |\nRecommendations:\n1. Immediate review of SKU-4563 handling procedures. 2. Implement additional verification for critical\nitems. 3. Schedule follow-up audit for high-value products (SKU-6678, SKU-2234).\nApproval:"
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/movie-theater-booking-2024.md",
    "content": "BOOKING ORDER\nPrint Date 12/15/2024 14:30:22\nPage 1 of 1\nSTARLIGHT CINEMAS\nOrders\n| Order / Rev: | 2024-12-5678   |     |     | Cinema:          |     | Downtown Multiplex |\n| ------------ | -------------- | --- | --- | ---------------- | --- | ------------------ |\n| Alt Order #: | SC-WINTER-2024 |     |     | Primary Contact: |     | Sarah Johnson      |\nProduct Desc: Holiday Movie Marathon Package Location: NYC-01\n| Estimate:            | EST-456                 |     |     | Region: |     | NORTHEAST |\n| -------------------- | ----------------------- | --- | --- | ------- | --- | --------- |\n| Booking Dates:       | 12/20/2024 - 12/31/2024 |     |     |         |     |           |\n| Original Date / Rev: | 12/01/24 / 12/10/24     |     |     |         |     |           |\n| Order Type:          | Premium Package         |     |     |         |     |           |\nBooking Agency\n| Name:            | Premier Entertainment Group |     |     |                |     |           |\n| ---------------- | --------------------------- | --- | --- | -------------- | --- | --------- |\n|                  |                             |     |     | Billing Type:  |     | Net 30    |\n| Contact:         | Michael Chen                |     |     |                |     |           |\n|                  |                             |     |     | Payment Terms: |     | Corporate |\n| Billing Contact: | accounting@premierent.com   |     |     |                |     |           |\n|                  |                             |     |     | Commission:    |     | 10%       |\n555 Broadway Suite 1200\nNew York, NY 10012\nCustomer\n| Name:          | Universal Studios Distribution |     |     |     |     |     |\n| -------------- | ------------------------------ | --- | --- | --- | --- | --- |\n| Category:      | Film Distributor               |     |     |     |     |     |\n| Contact Email: | bookings@universalstudios.com  |     |     |     |     |     |\n| Customer ID:   | CUST-98765                     |     |     |     |     |     |\n| Revenue Code:  | FILM-PREMIUM                   |     |     |     |     |     |\nBooking Summary\n| Start Date | End Date | # Shows | Gross Amount | Net Amount |     |     |\n| ---------- | -------- | ------- | ------------ | ---------- | --- | --- |\n| 12/20/24   | 12/31/24 | 48      | $12,500.00   | $11,250.00 |     |     |\nTotals\n| Month         | # Shows | Gross Amount |     | Net Amount |     | Occupancy |\n| ------------- | ------- | ------------ | --- | ---------- | --- | --------- |\n| December 2024 | 48      | $12,500.00   |     | $11,250.00 |     | 85%       |\n| Totals        | 48      | $12,500.00   |     | $11,250.00 |     | 85%       |\nAccount Representatives\nRepresentative Territory Region Start Date / End Date Commission %\n| Sarah Johnson | NYC Metro | NORTHEAST | 12/20/24 - 12/31/24 |     | 100% |     |\n| ------------- | --------- | --------- | ------------------- | --- | ---- | --- |\nShow Schedule Details\nLn Screen Start End Movie Title Format Showtime Days Shows Rate Type Total\n1 SCR-1 12/20/24 12/25/24 Holiday Spectacular IMAX 3D 7:00 PM Daily 12 $250 PM $3,000\n(Runtime: 142 min); Holiday Season Premium\n2 SCR-2 12/20/24 12/31/24 Winter Wonderland Standard 4:30 PM Daily 24 $150 MT $3,600\n(Runtime: 98 min); Matinee Special\n3 SCR-1 12/26/24 12/31/24 New Year Mystery 4DX 9:30 PM Daily 12 $300 PM $3,600\n(Runtime: 116 min); Premium Experience\nShow Details\n| Show Screen | Date Range | Title | Showtime | Days Type | Rate | Revenue |\n| ----------- | ---------- | ----- | -------- | --------- | ---- | ------- |\n1 SCR-1 12/20-12/25 Holiday Spectacular 7:00 PM Daily PM $250 $3,000\nThis booking order is subject to cinema availability and standard terms.\n2 SCR-2 12/20-12/31 Winter Wonderland 4:30 PM Daily MT $150 $3,600\nAll showtimes are approximate and subject to change.\n3 SCR-1 12/26-12/31 New Year Mystery 9:30 PM Daily PM $300 $3,600\n| Total Revenue: |     |     |     |     |     | $12,500.00 |\n| -------------- | --- | --- | --- | --- | --- | ---------- |"
  },
  {
    "path": "packages/markitdown/tests/test_files/expected_outputs/test.md",
    "content": "1\n\nIntroduction\n\nLarge language models (LLMs) are becoming a crucial building block in developing powerful agents\nthat utilize LLMs for reasoning, tool usage, and adapting to new observations (Yao et al., 2022; Xi\net al., 2023; Wang et al., 2023b) in many real-world tasks. Given the expanding tasks that could\nbenefit from LLMs and the growing task complexity, an intuitive approach to scale up the power of\nagents is to use multiple agents that cooperate. Prior work suggests that multiple agents can help\nencourage divergent thinking (Liang et al., 2023), improve factuality and reasoning (Du et al., 2023),\nand provide validation (Wu et al., 2023). In light of the intuition and early evidence of promise, it is\nintriguing to ask the following question: how can we facilitate the development of LLM applications\nthat could span a broad spectrum of domains and complexities based on the multi-agent approach?\n\nOur insight is to use multi-agent conversations to achieve it. There are at least three reasons con-\nfirming its general feasibility and utility thanks to recent advances in LLMs: First, because chat-\noptimized LLMs (e.g., GPT-4) show the ability to incorporate feedback, LLM agents can cooperate\nthrough conversations with each other or human(s), e.g., a dialog where agents provide and seek rea-\nsoning, observations, critiques, and validation. Second, because a single LLM can exhibit a broad\nrange of capabilities (especially when configured with the correct prompt and inference settings),\nconversations between differently configured agents can help combine these broad LLM capabilities\nin a modular and complementary manner. Third, LLMs have demonstrated ability to solve complex\ntasks when the tasks are broken into simpler subtasks. Multi-agent conversations can enable this\npartitioning and integration in an intuitive manner. How can we leverage the above insights and\nsupport different applications with the common requirement of coordinating multiple agents, poten-\ntially backed by LLMs, humans, or tools exhibiting different capacities? We desire a multi-agent\nconversation framework with generic abstraction and effective implementation that has the flexibil-\nity to satisfy different application needs. Achieving this requires addressing two critical questions:\n(1) How can we design individual agents that are capable, reusable, customizable, and effective in\nmulti-agent collaboration? (2) How can we develop a straightforward, unified interface that can\naccommodate a wide range of agent conversation patterns? In practice, applications of varying\ncomplexities may need distinct sets of agents with specific capabilities, and may require different\nconversation patterns, such as single- or multi-turn dialogs, different human involvement modes, and\nstatic vs. dynamic conversation. Moreover, developers may prefer the flexibility to program agent\ninteractions in natural language or code. Failing to adequately address these two questions would\nlimit the framework’s scope of applicability and generality.\nWhile there is contemporaneous exploration of multi-agent approaches,3 we present AutoGen, a\ngeneralized multi-agent conversation framework (Figure 1), based on the following new concepts.\n1 Customizable and conversable agents. AutoGen uses a generic design of agents that can lever-\nage LLMs, human inputs, tools, or a combination of them. The result is that developers can\neasily and quickly create agents with different roles (e.g., agents to write code, execute code,\nwire in human feedback, validate outputs, etc.) by selecting and configuring a subset of built-in\ncapabilities. The agent’s backend can also be readily extended to allow more custom behaviors.\nTo make these agents suitable for multi-agent conversation, every agent is made conversable –\nthey can receive, react, and respond to messages. When configured properly, an agent can hold\nmultiple turns of conversations with other agents autonomously or solicit human inputs at cer-\ntain rounds, enabling human agency and automation. The conversable agent design leverages the\nstrong capability of the most advanced LLMs in taking feedback and making progress via chat\nand also allows combining capabilities of LLMs in a modular fashion. (Section 2.1)\n\n2 Conversation programming. A fundamental insight of AutoGen is to simplify and unify com-\nplex LLM application workflows as multi-agent conversations. So AutoGen adopts a program-\nming paradigm centered around these inter-agent conversations. We refer to this paradigm as\nconversation programming, which streamlines the development of intricate applications via two\nprimary steps: (1) defining a set of conversable agents with specific capabilities and roles (as\ndescribed above); (2) programming the interaction behavior between agents via conversation-\ncentric computation and control. Both steps can be achieved via a fusion of natural and pro-\ngramming languages to build applications with a wide range of conversation patterns and agent\nbehaviors. AutoGen provides ready-to-use implementations and also allows easy extension and\nexperimentation for both steps. (Section 2.2)\n\n3We refer to Appendix A for a detailed discussion.\n\n2\n\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test.json",
    "content": "{\n    \"key1\": \"string_value\",\n    \"key2\": 1234,\n    \"key3\": [\n        \"list_value1\",\n        \"list_value2\"\n    ],\n    \"5b64c88c-b3c3-4510-bcb8-da0b200602d8\": \"uuid_key\",\n    \"uuid_value\": \"9700dc99-6685-40b4-9a3a-5e406dcb37f3\"\n}\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_blog.html",
    "content": "<!doctype html>\n<html lang=\"en\" dir=\"ltr\" class=\"blog-wrapper blog-post-page plugin-blog plugin-id-default\" data-has-hydrated=\"false\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"generator\" content=\"Docusaurus v3.1.1\">\n<title data-rh=\"true\">Does Model and Inference Parameter Matter in LLM Applications? - A Case Study for MATH | AutoGen</title><meta data-rh=\"true\" name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta data-rh=\"true\" name=\"twitter:card\" content=\"summary_large_image\"><meta data-rh=\"true\" property=\"og:url\" content=\"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\"><meta data-rh=\"true\" property=\"og:locale\" content=\"en\"><meta data-rh=\"true\" name=\"docusaurus_locale\" content=\"en\"><meta data-rh=\"true\" name=\"docusaurus_tag\" content=\"default\"><meta data-rh=\"true\" name=\"docsearch:language\" content=\"en\"><meta data-rh=\"true\" name=\"docsearch:docusaurus_tag\" content=\"default\"><meta data-rh=\"true\" property=\"og:title\" content=\"Does Model and Inference Parameter Matter in LLM Applications? - A Case Study for MATH | AutoGen\"><meta data-rh=\"true\" name=\"description\" content=\"level 2 algebra\"><meta data-rh=\"true\" property=\"og:description\" content=\"level 2 algebra\"><meta data-rh=\"true\" property=\"og:type\" content=\"article\"><meta data-rh=\"true\" property=\"article:published_time\" content=\"2023-04-21T00:00:00.000Z\"><meta data-rh=\"true\" property=\"article:author\" content=\"https://www.linkedin.com/in/chi-wang-49b15b16/\"><meta data-rh=\"true\" property=\"article:tag\" content=\"LLM,GPT,research\"><link data-rh=\"true\" rel=\"icon\" href=\"/autogen/img/ag.ico\"><link data-rh=\"true\" rel=\"canonical\" href=\"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\"><link data-rh=\"true\" rel=\"alternate\" href=\"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\" hreflang=\"en\"><link data-rh=\"true\" rel=\"alternate\" href=\"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\" hreflang=\"x-default\"><link rel=\"alternate\" type=\"application/rss+xml\" href=\"/autogen/blog/rss.xml\" title=\"AutoGen RSS Feed\">\n<link rel=\"alternate\" type=\"application/atom+xml\" href=\"/autogen/blog/atom.xml\" title=\"AutoGen Atom Feed\">\n\n\n\n\n\n\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.css\" integrity=\"sha384-Um5gpz1odJg5Z4HAmzPtgZKdTBHZdw8S29IecapCSB31ligYPhHQZMIlWLYQGVoc\" crossorigin=\"anonymous\">\n<script src=\"/autogen/js/custom.js\" async defer=\"defer\"></script><link rel=\"stylesheet\" href=\"/autogen/assets/css/styles.ca10f300.css\">\n<script src=\"/autogen/assets/js/runtime~main.83ab9fec.js\" defer=\"defer\"></script>\n<script src=\"/autogen/assets/js/main.5d28c826.js\" defer=\"defer\"></script>\n</head>\n<body class=\"navigation-with-keyboard\">\n<script>!function(){function t(t){document.documentElement.setAttribute(\"data-theme\",t)}var e=function(){try{return new URLSearchParams(window.location.search).get(\"docusaurus-theme\")}catch(t){}}()||function(){try{return localStorage.getItem(\"theme\")}catch(t){}}();t(null!==e?e:\"light\")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith(\"docusaurus-data-\")){var n=t.replace(\"docusaurus-data-\",\"data-\");document.documentElement.setAttribute(n,e)}}catch(t){}}(),document.documentElement.setAttribute(\"data-announcement-bar-initially-dismissed\",function(){try{return\"true\"===localStorage.getItem(\"docusaurus.announcement.dismiss\")}catch(t){}return!1}())</script><div id=\"__docusaurus\"><div role=\"region\" aria-label=\"Skip to main content\"><a class=\"skipToContent_fXgn\" href=\"#__docusaurus_skipToContent_fallback\">Skip to main content</a></div><div class=\"announcementBar_mb4j\" style=\"background-color:#fafbfc;color:#091E42\" role=\"banner\"><div class=\"announcementBarPlaceholder_vyr4\"></div><div class=\"content_knG7 announcementBarContent_xLdY\">What's new in AutoGen? Read <a href=\"/autogen/blog/2024/03/03/AutoGen-Update\">this blog</a> for an overview of updates</div><button type=\"button\" aria-label=\"Close\" class=\"clean-btn close closeButton_CVFx announcementBarClose_gvF7\"><svg viewBox=\"0 0 15 15\" width=\"14\" height=\"14\"><g stroke=\"currentColor\" stroke-width=\"3.1\"><path d=\"M.75.75l13.5 13.5M14.25.75L.75 14.25\"></path></g></svg></button></div><nav aria-label=\"Main\" class=\"navbar navbar--fixed-top\"><div class=\"navbar__inner\"><div class=\"navbar__items\"><button aria-label=\"Toggle navigation bar\" aria-expanded=\"false\" class=\"navbar__toggle clean-btn\" type=\"button\"><svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" aria-hidden=\"true\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" stroke-width=\"2\" d=\"M4 7h22M4 15h22M4 23h22\"></path></svg></button><a class=\"navbar__brand\" href=\"/autogen/\"><div class=\"navbar__logo\"><img src=\"/autogen/img/ag.svg\" alt=\"AutoGen\" class=\"themedComponent_mlkZ themedComponent--light_NVdE\"><img src=\"/autogen/img/ag.svg\" alt=\"AutoGen\" class=\"themedComponent_mlkZ themedComponent--dark_xIcU\"></div><b class=\"navbar__title text--truncate\">AutoGen</b></a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/Getting-Started\">Docs</a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/reference/agentchat/conversable_agent\">API</a><a aria-current=\"page\" class=\"navbar__item navbar__link navbar__link--active\" href=\"/autogen/blog\">Blog</a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/FAQ\">FAQ</a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/Examples\">Examples</a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/notebooks\">Notebooks</a><a class=\"navbar__item navbar__link\" href=\"/autogen/docs/Gallery\">Gallery</a></div><div class=\"navbar__items navbar__items--right\"><div class=\"navbar__item dropdown dropdown--hoverable dropdown--right\"><a href=\"#\" aria-haspopup=\"true\" aria-expanded=\"false\" role=\"button\" class=\"navbar__link\">Other Languages</a><ul class=\"dropdown__menu\"><li><a href=\"https://microsoft.github.io/autogen-for-net/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"dropdown__link\">Dotnet<svg width=\"12\" height=\"12\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" class=\"iconExternalLink_nPIU\"><path fill=\"currentColor\" d=\"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z\"></path></svg></a></li></ul></div><a href=\"https://github.com/microsoft/autogen\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"navbar__item navbar__link\">GitHub<svg width=\"13.5\" height=\"13.5\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" class=\"iconExternalLink_nPIU\"><path fill=\"currentColor\" d=\"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z\"></path></svg></a><div class=\"toggle_vylO colorModeToggle_DEke\"><button class=\"clean-btn toggleButton_gllP toggleButtonDisabled_aARS\" type=\"button\" disabled=\"\" title=\"Switch between dark and light mode (currently light mode)\" aria-label=\"Switch between dark and light mode (currently light mode)\" aria-live=\"polite\"><svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" class=\"lightToggleIcon_pyhR\"><path fill=\"currentColor\" d=\"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"></path></svg><svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" class=\"darkToggleIcon_wfgR\"><path fill=\"currentColor\" d=\"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"></path></svg></button></div><div class=\"navbarSearchContainer_Bca1\"><div class=\"navbar__search searchBarContainer_NW3z\"><input placeholder=\"Search\" aria-label=\"Search\" class=\"navbar__search-input\"><div class=\"loadingRing_RJI3 searchBarLoadingRing_YnHq\"><div></div><div></div><div></div><div></div></div><div class=\"searchHintContainer_Pkmr\"><kbd class=\"searchHint_iIMx\">ctrl</kbd><kbd class=\"searchHint_iIMx\">K</kbd></div></div></div></div></div><div role=\"presentation\" class=\"navbar-sidebar__backdrop\"></div></nav><div id=\"__docusaurus_skipToContent_fallback\" class=\"main-wrapper mainWrapper_z2l0\"><div class=\"container margin-vert--lg\"><div class=\"row\"><aside class=\"col col--3\"><nav class=\"sidebar_re4s thin-scrollbar\" aria-label=\"Blog recent posts navigation\"><div class=\"sidebarItemTitle_pO2u margin-bottom--md\">Recent posts</div><ul class=\"sidebarItemList_Yudw clean-list\"><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/03/03/AutoGen-Update\">What&#x27;s New in AutoGen?</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/02/29/StateFlow\">StateFlow - Build LLM Workflows with Customized State-Oriented Transition Function in GroupChat</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/02/11/FSM-GroupChat\">FSM Group Chat -- User-specified agent transitions</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/02/02/AutoAnny\">Anny: Assisting AutoGen Devs Via AutoGen</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/01/26/Custom-Models\">AutoGen with Custom Models: Empowering Users to Use Their Own Inference Mechanism</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/01/25/AutoGenBench\">AutoGenBench -- A Tool for Measuring and Evaluating AutoGen Agents</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2024/01/23/Code-execution-in-docker\">Code execution is now by default inside docker container</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/12/29/AgentDescriptions\">All About Agent Descriptions</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/12/23/AgentOptimizer\">AgentOptimizer - An Agentic Way to Train Your LLM Agent</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/12/01/AutoGenStudio\">AutoGen Studio: Interactively Explore Multi-Agent Workflows</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/11/26/Agent-AutoBuild\">Agent AutoBuild - Automatically Building Multi-agent Systems</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/11/20/AgentEval\">How to Assess Utility of LLM-powered Applications?</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/11/13/OAI-assistants\">AutoGen Meets GPTs</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/11/09/EcoAssistant\">EcoAssistant - Using LLM Assistants More Accurately and Affordably</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/11/06/LMM-Agent\">Multimodal with GPT-4V and LLaVA</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/10/26/TeachableAgent\">AutoGen&#x27;s Teachable Agents</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/10/18/RetrieveChat\">Retrieval-Augmented Generation (RAG) Applications with AutoGen</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/07/14/Local-LLMs\">Use AutoGen for Local LLMs</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/06/28/MathChat\">MathChat - An Conversational Framework to Solve Math Problems</a></li><li class=\"sidebarItem__DBe\"><a class=\"sidebarItemLink_mo7H\" href=\"/autogen/blog/2023/05/18/GPT-adaptive-humaneval\">Achieve More, Pay Less - Use GPT-4 Smartly</a></li><li class=\"sidebarItem__DBe\"><a aria-current=\"page\" class=\"sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP\" href=\"/autogen/blog/2023/04/21/LLM-tuning-math\">Does Model and Inference Parameter Matter in LLM Applications? - A Case Study for MATH</a></li></ul></nav></aside><main class=\"col col--7\" itemscope=\"\" itemtype=\"https://schema.org/Blog\"><article itemprop=\"blogPost\" itemscope=\"\" itemtype=\"https://schema.org/BlogPosting\"><meta itemprop=\"description\" content=\"level 2 algebra\"><header><h1 class=\"title_f1Hy\" itemprop=\"headline\">Does Model and Inference Parameter Matter in LLM Applications? - A Case Study for MATH</h1><div class=\"container_mt6G margin-vert--md\"><time datetime=\"2023-04-21T00:00:00.000Z\" itemprop=\"datePublished\">April 21, 2023</time> · <!-- -->6 min read</div><div class=\"margin-top--md margin-bottom--sm row\"><div class=\"col col--6 authorCol_Hf19\"><div class=\"avatar margin-bottom--sm\"><a href=\"https://www.linkedin.com/in/chi-wang-49b15b16/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"avatar__photo-link\"><img class=\"avatar__photo\" src=\"https://github.com/sonichi.png\" alt=\"Chi Wang\" itemprop=\"image\"></a><div class=\"avatar__intro\" itemprop=\"author\" itemscope=\"\" itemtype=\"https://schema.org/Person\"><div class=\"avatar__name\"><a href=\"https://www.linkedin.com/in/chi-wang-49b15b16/\" target=\"_blank\" rel=\"noopener noreferrer\" itemprop=\"url\"><span itemprop=\"name\">Chi Wang</span></a></div><small class=\"avatar__subtitle\" itemprop=\"description\">Principal Researcher at Microsoft Research</small></div></div></div></div></header><div id=\"__blog-post-container\" class=\"markdown\" itemprop=\"articleBody\"><p><img decoding=\"async\" loading=\"lazy\" alt=\"level 2 algebra\" src=\"/autogen/assets/images/level2algebra-659ba95286432d9945fc89e84d606797.png\" width=\"575\" height=\"469\" class=\"img_ev3q\"></p>\n<p><strong>TL;DR:</strong></p>\n<ul>\n<li><strong>Just by tuning the inference parameters like model, number of responses, temperature etc. without changing any model weights or prompt, the baseline accuracy of untuned gpt-4 can be improved by 20% in high school math competition problems.</strong></li>\n<li><strong>For easy problems, the tuned gpt-3.5-turbo model vastly outperformed untuned gpt-4 in accuracy (e.g., 90% vs. 70%) and cost efficiency. For hard problems, the tuned gpt-4 is much more accurate (e.g., 35% vs. 20%) and less expensive than untuned gpt-4.</strong></li>\n<li><strong>AutoGen can help with model selection, parameter tuning, and cost-saving in LLM applications.</strong></li>\n</ul>\n<p>Large language models (LLMs) are powerful tools that can generate natural language texts for various applications, such as chatbots, summarization, translation, and more. GPT-4 is currently the state of the art LLM in the world. Is model selection irrelevant? What about inference parameters?</p>\n<p>In this blog post, we will explore how model and inference parameter matter in LLM applications, using a case study for <a href=\"https://datasets-benchmarks-proceedings.neurips.cc/paper/2021/hash/be83ab3ecd0db773eb2dc1b0a17836a1-Abstract-round2.html\" target=\"_blank\" rel=\"noopener noreferrer\">MATH</a>, a benchmark for evaluating LLMs on advanced mathematical problem solving. MATH consists of 12K math competition problems from AMC-10, AMC-12 and AIME. Each problem is accompanied by a step-by-step solution.</p>\n<p>We will use AutoGen to automatically find the best model and inference parameter for LLMs on a given task and dataset given an inference budget, using a novel low-cost search &amp; pruning strategy. AutoGen currently supports all the LLMs from OpenAI, such as GPT-3.5 and GPT-4.</p>\n<p>We will use AutoGen to perform model selection and inference parameter tuning. Then we compare the performance and inference cost on solving algebra problems with the untuned gpt-4. We will also analyze how different difficulty levels affect the results.</p>\n<h2 class=\"anchor anchorWithStickyNavbar_LWe7\" id=\"experiment-setup\">Experiment Setup<a href=\"#experiment-setup\" class=\"hash-link\" aria-label=\"Direct link to Experiment Setup\" title=\"Direct link to Experiment Setup\">​</a></h2>\n<p>We use AutoGen to select between the following models with a target inference budget $0.02 per instance:</p>\n<ul>\n<li>gpt-3.5-turbo, a relatively cheap model that powers the popular ChatGPT app</li>\n<li>gpt-4, the state of the art LLM that costs more than 10 times of gpt-3.5-turbo</li>\n</ul>\n<p>We adapt the models using 20 examples in the train set, using the problem statement as the input and generating the solution as the output. We use the following inference parameters:</p>\n<ul>\n<li>temperature: The parameter that controls the randomness of the output text. A higher temperature means more diversity but less coherence. We search for the optimal temperature in the range of [0, 1].</li>\n<li>top_p: The parameter that controls the probability mass of the output tokens. Only tokens with a cumulative probability less than or equal to top-p are considered. A lower top-p means more diversity but less coherence. We search for the optimal top-p in the range of [0, 1].</li>\n<li>max_tokens: The maximum number of tokens that can be generated for each output. We search for the optimal max length in the range of [50, 1000].</li>\n<li>n: The number of responses to generate. We search for the optimal n in the range of [1, 100].</li>\n<li>prompt: We use the template: &quot;{problem} Solve the problem carefully. Simplify your answer as much as possible. Put the final answer in \\boxed{{}}.&quot; where {problem} will be replaced by the math problem instance.</li>\n</ul>\n<p>In this experiment, when n &gt; 1, we find the answer with highest votes among all the responses and then select it as the final answer to compare with the ground truth. For example, if n = 5 and 3 of the responses contain a final answer 301 while 2 of the responses contain a final answer 159, we choose 301 as the final answer. This can help with resolving potential errors due to randomness. We use the average accuracy and average inference cost as the metric to evaluate the performance over a dataset. The inference cost of a particular instance is measured by the price per 1K tokens and the number of tokens consumed.</p>\n<h2 class=\"anchor anchorWithStickyNavbar_LWe7\" id=\"experiment-results\">Experiment Results<a href=\"#experiment-results\" class=\"hash-link\" aria-label=\"Direct link to Experiment Results\" title=\"Direct link to Experiment Results\">​</a></h2>\n<p>The first figure in this blog post shows the average accuracy and average inference cost of each configuration on the level 2 Algebra test set.</p>\n<p>Surprisingly, the tuned gpt-3.5-turbo model is selected as a better model and it vastly outperforms untuned gpt-4 in accuracy (92% vs. 70%) with equal or 2.5 times higher inference budget.\nThe same observation can be obtained on the level 3 Algebra test set.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"level 3 algebra\" src=\"/autogen/assets/images/level3algebra-94e87a683ac8832ac7ae6f41f30131a4.png\" width=\"575\" height=\"469\" class=\"img_ev3q\"></p>\n<p>However, the selected model changes on level 4 Algebra.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"level 4 algebra\" src=\"/autogen/assets/images/level4algebra-492beb22490df30d6cc258f061912dcd.png\" width=\"580\" height=\"469\" class=\"img_ev3q\"></p>\n<p>This time gpt-4 is selected as the best model. The tuned gpt-4 achieves much higher accuracy (56% vs. 44%) and lower cost than the untuned gpt-4.\nOn level 5 the result is similar.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"level 5 algebra\" src=\"/autogen/assets/images/level5algebra-8fba701551334296d08580b4b489fe56.png\" width=\"575\" height=\"469\" class=\"img_ev3q\"></p>\n<p>We can see that AutoGen has found different optimal model and inference parameters for each subset of a particular level, which shows that these parameters matter in cost-sensitive LLM applications and need to be carefully tuned or adapted.</p>\n<p>An example notebook to run these experiments can be found at: <a href=\"https://github.com/microsoft/FLAML/blob/v1.2.1/notebook/autogen_chatgpt.ipynb\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/microsoft/FLAML/blob/v1.2.1/notebook/autogen_chatgpt.ipynb</a>. The experiments were run when AutoGen was a subpackage in FLAML.</p>\n<h2 class=\"anchor anchorWithStickyNavbar_LWe7\" id=\"analysis-and-discussion\">Analysis and Discussion<a href=\"#analysis-and-discussion\" class=\"hash-link\" aria-label=\"Direct link to Analysis and Discussion\" title=\"Direct link to Analysis and Discussion\">​</a></h2>\n<p>While gpt-3.5-turbo demonstrates competitive accuracy with voted answers in relatively easy algebra problems under the same inference budget, gpt-4 is a better choice for the most difficult problems. In general, through parameter tuning and model selection, we can identify the opportunity to save the expensive model for more challenging tasks, and improve the overall effectiveness of a budget-constrained system.</p>\n<p>There are many other alternative ways of solving math problems, which we have not covered in this blog post. When there are choices beyond the inference parameters, they can be generally tuned via <a href=\"https://microsoft.github.io/FLAML/docs/Use-Cases/Tune-User-Defined-Function\" target=\"_blank\" rel=\"noopener noreferrer\"><code>flaml.tune</code></a>.</p>\n<p>The need for model selection, parameter tuning and cost saving is not specific to the math problems. The <a href=\"https://github.com/Significant-Gravitas/Auto-GPT\" target=\"_blank\" rel=\"noopener noreferrer\">Auto-GPT</a> project is an example where high cost can easily prevent a generic complex task to be accomplished as it needs many LLM inference calls.</p>\n<h2 class=\"anchor anchorWithStickyNavbar_LWe7\" id=\"for-further-reading\">For Further Reading<a href=\"#for-further-reading\" class=\"hash-link\" aria-label=\"Direct link to For Further Reading\" title=\"Direct link to For Further Reading\">​</a></h2>\n<ul>\n<li><a href=\"https://arxiv.org/abs/2303.04673\" target=\"_blank\" rel=\"noopener noreferrer\">Research paper about the tuning technique</a></li>\n<li><a href=\"/autogen/docs/Use-Cases/enhanced_inference\">Documentation about inference tuning</a></li>\n</ul>\n<p><em>Do you have any experience to share about LLM applications? Do you like to see more support or research of LLM optimization or automation? Please join our <a href=\"https://discord.gg/pAbnFJrkgZ\" target=\"_blank\" rel=\"noopener noreferrer\">Discord</a> server for discussion.</em></p></div><footer class=\"row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl\"><div class=\"col\"><b>Tags:</b><ul class=\"tags_jXut padding--none margin-left--sm\"><li class=\"tag_QGVx\"><a class=\"tag_zVej tagRegular_sFm0\" href=\"/autogen/blog/tags/llm\">LLM</a></li><li class=\"tag_QGVx\"><a class=\"tag_zVej tagRegular_sFm0\" href=\"/autogen/blog/tags/gpt\">GPT</a></li><li class=\"tag_QGVx\"><a class=\"tag_zVej tagRegular_sFm0\" href=\"/autogen/blog/tags/research\">research</a></li></ul></div></footer></article><nav class=\"pagination-nav docusaurus-mt-lg\" aria-label=\"Blog post page navigation\"><a class=\"pagination-nav__link pagination-nav__link--prev\" href=\"/autogen/blog/2023/05/18/GPT-adaptive-humaneval\"><div class=\"pagination-nav__sublabel\">Newer Post</div><div class=\"pagination-nav__label\">Achieve More, Pay Less - Use GPT-4 Smartly</div></a></nav></main><div class=\"col col--2\"><div class=\"tableOfContents_bqdL thin-scrollbar\"><ul class=\"table-of-contents table-of-contents__left-border\"><li><a href=\"#experiment-setup\" class=\"table-of-contents__link toc-highlight\">Experiment Setup</a></li><li><a href=\"#experiment-results\" class=\"table-of-contents__link toc-highlight\">Experiment Results</a></li><li><a href=\"#analysis-and-discussion\" class=\"table-of-contents__link toc-highlight\">Analysis and Discussion</a></li><li><a href=\"#for-further-reading\" class=\"table-of-contents__link toc-highlight\">For Further Reading</a></li></ul></div></div></div></div></div><footer class=\"footer footer--dark\"><div class=\"container container-fluid\"><div class=\"row footer__links\"><div class=\"col footer__col\"><div class=\"footer__title\">Community</div><ul class=\"footer__items clean-list\"><li class=\"footer__item\"><a href=\"https://discord.gg/pAbnFJrkgZ\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"footer__link-item\">Discord<svg width=\"13.5\" height=\"13.5\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" class=\"iconExternalLink_nPIU\"><path fill=\"currentColor\" d=\"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z\"></path></svg></a></li><li class=\"footer__item\"><a href=\"https://twitter.com/pyautogen\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"footer__link-item\">Twitter<svg width=\"13.5\" height=\"13.5\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" class=\"iconExternalLink_nPIU\"><path fill=\"currentColor\" d=\"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z\"></path></svg></a></li></ul></div></div><div class=\"footer__bottom text--center\"><div class=\"footer__copyright\">Copyright © 2024 AutoGen Authors |  <a target=\"_blank\" style=\"color:#10adff\" href=\"https://go.microsoft.com/fwlink/?LinkId=521839\">Privacy and Cookies</a></div></div></div></footer></div>\n</body>\n</html>\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_mskanji.csv",
    "content": "O,N,Z\r\nY,30,\r\nO؉pq,25,\r\n~,35,É\r\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_notebook.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"0f61db80\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Test Notebook\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"id\": \"3f2a5bbd\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"markitdown\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"markitdown\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"9b9c0468\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Code Cell Below\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"id\": \"37d8088a\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"42\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# comment in code\\n\",\n    \"print(42)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"2e3177bd\",\n   \"metadata\": {},\n   \"source\": [\n    \"End\\n\",\n    \"\\n\",\n    \"---\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.8\"\n  },\n  \"title\": \"Test Notebook Title\"\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_rss.xml",
    "content": "<rss xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ns0=\"http://www.w3.org/2005/Atom\" xmlns:ns1=\"http://purl.org/rss/1.0/modules/syndication/\" xmlns:ns3=\"http://purl.org/rss/1.0/modules/content/\" version=\"2.0\"><channel>\t<title>The Official Microsoft Blog</title>\t<ns0:link href=\"https://blogs.microsoft.com/feed/\" rel=\"self\" type=\"application/rss+xml\" />\t<link>https://blogs.microsoft.com/</link>\t<description />\t<lastBuildDate>Mon, 09 Dec 2024 20:26:59 +0000</lastBuildDate>\t<language>en-US</language>\t<ns1:updatePeriod>\thourly\t</ns1:updatePeriod>\t<ns1:updateFrequency>\t1\t</ns1:updateFrequency>\t<generator>https://wordpress.org/?v=6.5.5</generator><image>\t<url>https://blogs.microsoft.com/wp-content/uploads/prod/2017/08/favicon.jpg</url>\t<title>The Official Microsoft Blog</title>\t<link>https://blogs.microsoft.com/</link>\t<width>32</width>\t<height>32</height></image> \t<item>\t\t<title>Ignite 2024: Why nearly 70% of the Fortune 500 now use Microsoft 365 Copilot</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/19/ignite-2024-why-nearly-70-of-the-fortune-500-now-use-microsoft-365-copilot/</link>\t\t\t\t<dc:creator>Frank X. Shaw</dc:creator>\t\t<pubDate>Tue, 19 Nov 2024 13:30:02 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>AI</category>\t\t<category>Azure AI Foundry</category>\t\t<category>Book of News</category>\t\t<category>Copilot</category>\t\t<category>Dynamics 365</category>\t\t<category>Employee Self-Service Agent</category>\t\t<category>Interpreter</category>\t\t<category>Microsoft 365</category>\t\t<category>Microsoft Azure</category>\t\t<category>Microsoft Cloud</category>\t\t<category>Microsoft Ignite 2024</category>\t\t<category>Recall</category>\t\t<category>Secure Future Initiative</category>\t\t<category>Windows 365 Link</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562029</guid>\t\t\t\t\t<description>&lt;p&gt;Two things can be true at the same time. In the case of AI, it is absolutely true that the industry is moving incredibly fast and evolving quickly. It’s also true that hundreds of thousands of customers are using Microsoft AI technology today and, by making early bets on the platform, are seeing big benefits...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/19/ignite-2024-why-nearly-70-of-the-fortune-500-now-use-microsoft-365-copilot/\"&gt;Ignite 2024: Why nearly 70% of the Fortune 500 now use Microsoft 365 Copilot&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;Two things can be true at the same time.&lt;/p&gt;&lt;p&gt;In the case of AI, it is absolutely true that the industry is moving incredibly fast and evolving quickly. It’s also true that hundreds of thousands of customers are using Microsoft AI technology today and, by making early bets on the platform, are seeing big benefits now and future-proofing their ability to benefit from the next big wave of AI improvements.&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://ignite.microsoft.com/en-US/home\"&gt;&lt;strong&gt;Microsoft Ignite&lt;/strong&gt;&lt;/a&gt; is our annual event that spotlights the updates and creations that enable customers, partners and developers to unleash the full potential of Microsoft’s technology and change the way we approach work.&lt;/p&gt;&lt;p&gt;This year, we are announcing about 80 new products and features, including new capabilities in Microsoft 365 Copilot, additions to the Copilot + AI stack and new Copilot+ devices offerings. Underpinning each of these innovations is our commitment to security. Since launching our &lt;a href=\"https://www.microsoft.com/en-us/trust-center/security/secure-future-initiative\"&gt;Secure Future Initiative (SFI)&lt;/a&gt; one year ago, we have made security the No. 1 job of every employee at Microsoft, dedicated 34,000 engineers to this focus and, at Ignite, we will announce innovations that are rooted in our SFI principles: secure by design, secure by default and secure operations.&lt;/p&gt;&lt;p&gt;More than 200,000 people have registered to join us for this year’s Ignite, with more than 14,000 attendees at our in-person events in Chicago. Attendees can choose from more than 800 sessions, demos and expert-led labs from Microsoft and our partners. Most of the Ignite content will be available &lt;a href=\"https://ignite.microsoft.com/en-US/home\"&gt;on demand&lt;/a&gt; for those who can’t attend the live event.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Copilot momentum&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Microsoft 365 Copilot is your AI assistant for work, and we have seen the momentum grow as more organizations are moving to Copilot and deploying it to great success. All up, &lt;a href=\"https://www.microsoft.com/en-us/investor/events/fy-2025/earnings-fy-2025-q1\"&gt;nearly 70%&lt;/a&gt; of the Fortune 500 now use Microsoft 365 Copilot.&lt;/p&gt;&lt;p&gt;That echoes an industry trend: A &lt;a href=\"https://aka.ms/ai-study\"&gt;recent IDC study&lt;/a&gt; showed that generative AI is on the rise, with 75% adoption among companies surveyed in 2024. In addition, for every $1 invested, companies are realizing a return of $3.70, and leaders are saying they are realizing as much as a $10 return, according to the study.&lt;/p&gt;&lt;p&gt;The investments that Microsoft has made in Copilot are paying dividends for our customers.&lt;/p&gt;&lt;p&gt;We recently highlighted some of the &lt;a href=\"https://aka.ms/AIcustomersBlog\"&gt;more than 200 customer stories&lt;/a&gt; of accelerated AI Transformation, with Copilot helping many of them spark innovation and transform their organization for the better. Several examples include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Intelligent power management company &lt;strong&gt;Eaton&lt;/strong&gt; leveraged Microsoft 365 Copilot to help streamline and automate operations, improve data access, centralize knowledge and empower teams to focus on higher-value tasks. One immediate challenge addressed through Copilot focused on the manual, time-consuming documentation process in Eaton’s Finance operations. Copilot helped Eaton document over 9,000 standard operating procedures (SOPs), resulting in &lt;strong&gt;an 83% time savings for each SOP&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Consulting firm &lt;strong&gt;McKinsey &amp;amp; Company &lt;/strong&gt;is creating an agent to speed up the client onboarding process. The &lt;strong&gt;pilot showed lead time could be reduced by 90% and administrative work reduced by 30%&lt;/strong&gt;. The agent automates complex processes, such as identifying the right expert capabilities and staffing teams and acts as a single place where colleagues can ask questions and request follow-ups. By streamlining tasks and reducing manual inputs, this agent could potentially save consultants many hours, allowing them to spend more time with clients.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;Boosting productivity with Microsoft 365 Copilot &lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Microsoft is continuing to supercharge productivity with new capabilities in Microsoft 365 Copilot designed to help simplify the workday.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Copilot Actions&lt;/strong&gt;, now in private preview, enable anyone to automate everyday tasks with simple, fill-in-the-blank prompts, whether it’s getting a daily summary of meeting actions in Microsoft Teams, compiling weekly reports or getting an email upon return from vacation that summarizes missed meetings, chats and emails.&lt;/p&gt;&lt;p&gt;Anyone can easily set up Actions right in their Microsoft 365 app, allowing users to focus on more impactful work, save time and boost productivity.&lt;/p&gt;&lt;p&gt;New agents in Microsoft 365 are designed to help scale individual impact and transform business process. At Ignite we will introduce:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Agents in SharePoint: &lt;/strong&gt;These natural language AI assistants are grounded on relevant SharePoint sites, files and folders to make it easy to find answers from that content, and to make quicker decisions as a result. Now generally available, every SharePoint site will include an agent tailored to its content. Users can also create customized agents scoped to select SharePoint files, folders or sites with as little as one click.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Interpreter: &lt;/strong&gt;This agent in Teams helps users overcome language barriers by enabling real-time, speech-to-speech interpretation in meetings. Available in public preview in early 2025, meeting participants will also have the option to have the agent simulate their personal voice.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;Employee Self-Service Agent: &lt;/strong&gt;An agent available in private preview in Business Chat expedites answers for the most common policy-related questions and simplifies action-taking on key HR and IT-related tasks — like helping employees understand their benefits or request a new laptop. It can be customized in Copilot Studio to meet an organization’s unique needs.&lt;/li&gt;&lt;li&gt;Other agents in public preview take real-time &lt;strong&gt;meeting notes&lt;/strong&gt; in Teams and automate &lt;strong&gt;project management&lt;/strong&gt; from start to finish in Planner.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;Copilot + AI Stack&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;The Copilot stack empowers users to build more ambitious products by leveraging advanced technology at each layer of the stack. To create a unified experience where customers can design, customize and manage AI applications and agents, we are introducing &lt;strong&gt;Azure AI Foundry&lt;/strong&gt;, which gives customers access to all existing Azure AI services and tooling, plus new capabilities like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Azure AI Foundry SDK&lt;/strong&gt;, now available in preview, provides a unified toolchain for designing, customizing and managing AI apps and agents with enterprise-grade control and customization. With tools that help organizations responsibly scale their applications, Foundry also provides 25 prebuilt app templates and a simplified coding experience they can access from familiar tools like GitHub, Visual Studio and Copilot Studio.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Azure AI Foundry portal (formerly Azure AI Studio)&lt;/strong&gt;, now available in preview, is a comprehensive visual user interface to help developers discover AI models, services and tools. With a new management center experience that brings essential subscription information into a single dashboard, the portal also helps IT admins, operations and compliance teams manage AI applications at scale.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Azure AI Agent Service,&lt;/strong&gt; coming soon to preview, will enable professional developers to orchestrate, deploy and scale enterprise-ready agents to automate business processes.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also continue to back up our &lt;a href=\"https://blogs.microsoft.com/blog/2024/09/24/microsoft-trustworthy-ai-unlocking-human-potential-starts-with-trust/\"&gt;Trustworthy AI commitments&lt;/a&gt; with new tools. Today we’re announcing &lt;a href=\"https://aka.ms/Ignite2024/AIreports\"&gt;AI reports&lt;/a&gt; and &lt;a href=\"https://aka.ms/Ignite2024/GenAIEvaluations\"&gt;risk and safety evaluations for images&lt;/a&gt; to help organizations ensure AI applications are safe and compliant. AI reports will help organizations improve observability, collaboration and governance for AI apps and fine-tuned models, while evaluations for image content will help customers assess the frequency and severity of harmful content in their app’s AI-generated outputs.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Copilot+ devices&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;As organizations move more workloads to the cloud to enhance security and flexibility, Microsoft is expanding its Cloud PC solution by introducing the first in a new class of devices purpose-built to connect securely to Windows 365 in seconds.&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://aka.ms/Windows365LinkPublicPreview\"&gt;&lt;strong&gt;Windows 365 Link&lt;/strong&gt;&lt;/a&gt; is the simple, secure, purpose-built device for Windows 365. It is in preview now and will become generally available for purchase starting in April 2025 in select markets with an MSRP of $349, allowing users to work securely in a familiar Windows desktop in the Microsoft Cloud with responsive, high-fidelity experiences.&lt;/p&gt;&lt;p&gt;Windows 365 Link is secure by design. The device has no local data, no local apps and admin-less users so corporate data stays protected within the Microsoft Cloud.&lt;/p&gt;&lt;p&gt;Other new capabilities for Copilot+ PCs for commercial customers include harnessing the power of inbuilt native processing units (NPUs) to deliver local AI. With improved Windows Search, and the new Recall experience (preview), finding what you need on your PC is easier than ever by just describing what you are looking for. These features are releasing first to our Windows Insider community on Copilot+ PCs before rolling out more broadly to our customers.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;BlackRock momentum&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Four years ago, &lt;a href=\"https://www.blackrock.com/us/individual\"&gt;BlackRock&lt;/a&gt;, one of the world’s pre-eminent asset management firms, formed a strategic alliance with Microsoft to move its Aladdin platform to Microsoft Azure. With this foundation on Azure, BlackRock rolled out generative AI tools for global clients with Aladdin Copilot. Through generative AI, Aladdin Copilot serves to strengthen the connective tissue across the platform, leveraging Microsoft technology to help users receive answers instantly to unlock new efficiencies and discover important business insights even faster. Aladdin Copilot makes BlackRock’s Aladdin platform even more intelligent and responsive. That results in enhanced productivity, enables scale and keeps users more informed.&lt;/p&gt;&lt;p&gt;BlackRock&amp;#8217;s move to Azure and launch of Aladdin Copilot are just two of the many ongoing milestones in a long-term partnership that also includes an enterprise-wide deal for 24,000 seats of Microsoft 365 Copilot. Today, about 60% of BlackRock&amp;#8217;s Copilot user population is leveraging Copilot on a weekly basis. Additionally, BlackRock also recently made the choice to move its on-prem CRM solution to the cloud with Dynamics 365, citing its native integration with Teams and Outlook as one of its primary decision-making factors.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Strength in security&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;We know that the threat landscape is rapidly evolving, and it’s imperative that we stay ahead of bad actors. At Microsoft we believe that security is a team sport, and we are stronger when we partner as a security community to share information, collaborate and stop bad actors.&lt;/p&gt;&lt;p&gt;In that spirit, and as part of our Secure Future Initiative (SFI), at Ignite &lt;a href=\"https://msrc.microsoft.com/blog/2024/11/securing-ai-and-cloud-with-the-zero-day-quest\"&gt;we are announcing&lt;/a&gt; the largest public security research event in history: the Zero Day Quest. This event, which focuses on AI and cloud security, will offer the largest award pool in the industry at $4 million, in addition to our existing $16 million annual bounty program. This competition aims to attract the world&amp;#8217;s best security minds to tackle high-impact scenarios critical to our customers&amp;#8217; security, with award multipliers, starting today.&lt;/p&gt;&lt;p&gt;As the threat landscape has changed, we have seen rapid evolution in the way attackers exploit weaknesses within systems — particularly by navigating graph relationships between identities, files and devices to uncover attack paths. Attackers thinking in graphs cause wider damage from the first point of intrusion. Traditional security products, with limited visibility into these graph relationships, are often better suited to protect specific devices or mediums — like laptops or inboxes — rather than the full scope of potential attack surface.&lt;/p&gt;&lt;p&gt;Today’s &lt;a href=\"https://aka.ms/Ignite2024Security\"&gt;&lt;strong&gt;Microsoft Security&lt;/strong&gt; &lt;strong&gt;Exposure Management&lt;/strong&gt;&lt;/a&gt; launch is a pivotal step in transforming cybersecurity with savvy data and AI-based strategies. The power of incorporating Microsoft graph data, in context with data from customers’ other third-party security tools, creates a powerful single pane of glass to visualize attack paths before threat actors do. With computing power and cloud-scale performance to distill powerful real-time mapping of assets and evolving risks, Exposure Management assists security teams in preventing intrusions and provides IT, operations and risk leaders with real-time data to support cyber risk decision-making.&lt;/p&gt;&lt;p&gt;This is only a small section of the many exciting features and updates we will be announcing &lt;a href=\"https://ignite.microsoft.com/en-US/home\"&gt;at Ignite&lt;/a&gt;. As a reminder, you can view keynote sessions from Microsoft executives including Satya Nadella, Rajesh Jha, Scott Guthrie, Charlie Bell and Vasu Jakkal, live or on-demand.&lt;/p&gt;&lt;p&gt;Plus, you can get more on all these announcements by exploring the &lt;a href=\"http://aka.ms/book-of-news\"&gt;Book of News&lt;/a&gt;, the official compendium of all today’s news.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/19/ignite-2024-why-nearly-70-of-the-fortune-500-now-use-microsoft-365-copilot/\"&gt;Ignite 2024: Why nearly 70% of the Fortune 500 now use Microsoft 365 Copilot&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>8080 Books, an imprint of Microsoft, launches, offering thought leadership titles spanning technology, business and society</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/18/8080-books-an-imprint-of-microsoft-launches-offering-thought-leadership-titles-spanning-technology-business-and-society/</link>\t\t\t\t<dc:creator>Steve Clayton, vice president, communications, and Greg Shaw, senior director, CEO communications</dc:creator>\t\t<pubDate>Mon, 18 Nov 2024 13:59:03 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52561976</guid>\t\t\t\t\t<description>&lt;p&gt;As fans of books, especially in their physical format, it is our great pleasure to launch 8080 Books, an imprint of Microsoft. Our first title, No Prize for Pessimism, is authored by Sam Schillace, deputy chief technology officer at Microsoft, and is available today. Our second title, Platform Mindset, by Marcus Fontoura, will be available...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/18/8080-books-an-imprint-of-microsoft-launches-offering-thought-leadership-titles-spanning-technology-business-and-society/\"&gt;8080 Books, an imprint of Microsoft, launches, offering thought leadership titles spanning technology, business and society&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;As fans of books, especially in their physical format, it is our great pleasure to launch 8080 Books, an imprint of Microsoft. Our first title, &lt;/span&gt;&lt;i&gt;&lt;span data-contrast=\"auto\"&gt;No Prize for Pessimism, &lt;/span&gt;&lt;/i&gt;&lt;span data-contrast=\"auto\"&gt;is authored by Sam Schillace, deputy chief technology officer at Microsoft, and is &lt;/span&gt;&lt;a href=\"http://aka.ms/8080\"&gt;&lt;span data-contrast=\"none\"&gt;available today&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt;. Our second title, &lt;/span&gt;&lt;i&gt;&lt;span data-contrast=\"auto\"&gt;Platform Mindset&lt;/span&gt;&lt;/i&gt;&lt;span data-contrast=\"auto\"&gt;, by Marcus Fontoura, will be available later this year. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Computing has become an essential ingredient to almost every endeavor on our planet, and, as students of both Microsoft and technology, our goal with 8080 Books is to publish original research, ideas and insights at the intersection of science, technology and business, and, in doing so, to help advance discourse on this important landscape.  &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;The name of our imprint takes its inspiration from the 8080 microprocessor — a foundation for the company’s earliest software breakthroughs. Not coincidentally, 8080 is also the last four digits of Microsoft’s corporate headquarters phone number.  &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;With a combined tenure of, well, let’s just say a long time, we’re both acutely aware of the rich well of talent at Microsoft from which we can draw upon and publish under the 8080 Books imprint over time. However, our intention is that we will seek to use this not just as a platform for Microsoft authors but also to showcase minds and ideas from outside of the company. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;While we are not currently accepting unsolicited manuscripts, our &lt;/span&gt;&lt;a href=\"https://aka.ms/8080\"&gt;&lt;span data-contrast=\"none\"&gt;website&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; does provide more details about our plans, such as evaluating out of print titles that we feel remain relevant to today’s leaders, and why we feel the time is right to launch this imprint. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;We hope you enjoy our launch title, which is available &lt;/span&gt;&lt;a href=\"http://aka.ms/8080\"&gt;&lt;span data-contrast=\"none\"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt;, and we look forward to hearing your feedback, questions and ideas as we embark on this new adventure. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;For anyone in the Puget Sound area, we invite you to Schillace’s first reading and signing at Brick &amp;amp; Mortar Books, on Wednesday, Dec. 11 in Redmond, Washington. &lt;/span&gt;&lt;a href=\"https://www.brickandmortarbooks.com/events/1402020241211\"&gt;&lt;span data-contrast=\"none\"&gt;Check here&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; for details. Space is limited.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/07/sam_cover_omb.png\"&gt;&lt;img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-52562211\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/07/sam_cover_omb.png\" alt=\"\" width=\"328\" height=\"497\" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/07/sam_cover_omb.png 450w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/07/sam_cover_omb-198x300.png 198w\" sizes=\"(max-width: 328px) 100vw, 328px\" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/18/8080-books-an-imprint-of-microsoft-launches-offering-thought-leadership-titles-spanning-technology-business-and-society/\"&gt;8080 Books, an imprint of Microsoft, launches, offering thought leadership titles spanning technology, business and society&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>From questions to discoveries: NASA’s new Earth Copilot brings Microsoft AI capabilities to democratize access to complex data</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/14/from-questions-to-discoveries-nasas-new-earth-copilot-brings-microsoft-ai-capabilities-to-democratize-access-to-complex-data/</link>\t\t\t\t<dc:creator>Tyler Bryson</dc:creator>\t\t<pubDate>Thu, 14 Nov 2024 16:00:00 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>AI</category>\t\t<category>Azure OpenAI Service</category>\t\t<category>Copilot</category>\t\t<category>Microsoft Azure</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562133</guid>\t\t\t\t\t<description>&lt;p&gt;Every day, NASA’s satellites orbit Earth, capturing a wealth of information that helps us understand our planet. From monitoring wildfires to tracking climate change, this vast trove of Earth Science data has the potential to drive scientific discoveries, inform policy decisions and support industries like agriculture, urban planning and disaster response. But navigating the over...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/14/from-questions-to-discoveries-nasas-new-earth-copilot-brings-microsoft-ai-capabilities-to-democratize-access-to-complex-data/\"&gt;From questions to discoveries: NASA’s new Earth Copilot brings Microsoft AI capabilities to democratize access to complex data&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;Every day, &lt;a href=\"https://science.nasa.gov/earth\"&gt;NASA’s satellites orbit Earth&lt;/a&gt;, capturing a wealth of information that helps us understand our planet. From monitoring wildfires to tracking climate change, this vast trove of Earth Science data has the potential to drive scientific discoveries, inform policy decisions and support industries like agriculture, urban planning and disaster response.&lt;/p&gt;&lt;p&gt;But navigating the over 100 petabytes of collected data can be challenging, which is why NASA has collaborated with Microsoft to explore the use of a custom copilot using Azure OpenAI Service to develop NASA’s Earth Copilot, which could transform how people interact with Earth’s data.&lt;/p&gt;&lt;p&gt;Geospatial data is complex, and often requires some level of technical expertise to navigate it. As a result, this data tends to be accessible only to a limited number of researchers and scientists. As NASA collects more data from new satellites, these complexities only grow and may further limit the potential pool of people able to draw insights and develop applications that could benefit society.&lt;/p&gt;&lt;p&gt;Recognizing this challenge, NASA embarked on a mission to make its data more accessible and user-friendly. &lt;span data-teams=\"true\"&gt; Through NASA’s Office of the Chief Science Data Officer,&lt;/span&gt; the agency seeks to democratize data access, breaking down technical barriers to empower a diverse range of audiences, from scientists and educators to policymakers and the general public.&lt;/p&gt;&lt;div class=\"video-container responsive-youtube oembed-container\"&gt;&lt;p id=\"ariaLabel_675e5e9abbadb\" class=\"screen-reader-text\"&gt;YouTube Video&lt;/p&gt;&lt;p&gt;&lt;iframe title=\"YouTube Video\" aria-labelledby=ariaLabel_675e5e9abbadb\" title=\"NASA&amp;#039;s new Earth Copilot brings Microsoft AI to democratize access to complex data\" width=\"100%\" height=\"746\" data-src=\"https://www.youtube-nocookie.com/embed/YJs6kU4BtR4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen&gt;&lt;/iframe&gt;&lt;button class=\"cookie-consent-btn\"&gt;Click here to load media&lt;/button&gt;&lt;/div&gt;&lt;h3&gt;&lt;strong&gt;The challenge: Navigating the complexity of data&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;NASA&amp;#8217;s Earth Science Data Systems Program is responsible for collecting an incredible variety of data from spaceborne sensors and instruments. This data spans everything from atmospheric conditions to land cover changes, ocean temperatures and more. However, the sheer scale and complexity of this information can be overwhelming. For many, finding and extracting insights requires navigating technical interfaces, understanding data formats and mastering the intricacies of geospatial analysis — specialized skills that very few non-technical users possess. AI could streamline this process, reducing time to gain insights from Earth’s data to a matter of seconds.&lt;/p&gt;&lt;p&gt;This issue isn&amp;#8217;t just a matter of convenience; it has real-world implications. For example, scientists who need to analyze historical data on hurricanes to improve predictive models, or policymakers who want to study deforestation patterns to implement environmental regulations, may find themselves unable to easily access the data they need. This inaccessibility affects a broad array of sectors, including agriculture, urban planning and disaster response, where timely insights from spaceborne data could make a significant difference.&lt;/p&gt;&lt;p&gt;Moreover, as new satellites with new instruments continue to launch and collect more data, NASA is constantly faced with the challenge of building new tools to manage and make sense of this growing repository. The agency explored emerging technologies that could not only streamline data discovery but also broaden accessibility, enabling more people to engage with the data and uncover new insights.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;The solution: AI-powered data access through Microsoft Azure&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;To address these challenges, NASA IMPACT worked with Microsoft to develop an AI-driven customer copilot, called Earth Copilot, which could simplify data access and encourage a wider range of users to interact with its Earth Science data. Together, they built the proof of concept AI model that leverages Microsoft&amp;#8217;s Azure cloud platform and advanced AI capabilities to transform how users can search, discover and analyze NASA’s geospatial data.&lt;/p&gt;&lt;p&gt;The key to NASA’s Earth Copilot lies in the integration of cloud-based technologies like Azure OpenAI Service, which provides access to powerful AI models and natural language processing capabilities that enable developers to integrate intelligent, conversational AI into their applications. This approach allows NASA to integrate AI into its existing data analysis platform — VEDA. These technologies together make it easier for users to search, discover and analyze Earth Science data&lt;/p&gt;&lt;p&gt;By combining these technologies, Earth Copilot enables users to interact with NASA&amp;#8217;s data repository through plain language queries. Instead, they can simply ask questions such as “What was the impact of Hurricane Ian in Sanibel Island?” or “How did the COVID-19 pandemic affect air quality in the US?” AI will then retrieve relevant datasets, making the process seamless and intuitive.&lt;/p&gt;&lt;figure id=\"attachment_52562204\" aria-describedby=\"caption-attachment-52562204\" style=\"width: 990px\" class=\"wp-caption alignnone\"&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NASA-Earth-Image-1.png\"&gt;&lt;img decoding=\"async\" class=\"wp-image-52562204 size-full\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NASA-Earth-Image-1.png\" alt=\"An image of NASA’s EARTHDATA VEDA Dashboard.\" width=\"990\" height=\"421\" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NASA-Earth-Image-1.png 990w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NASA-Earth-Image-1-300x128.png 300w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NASA-Earth-Image-1-768x327.png 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" /&gt;&lt;/a&gt;&lt;figcaption id=\"caption-attachment-52562204\" class=\"wp-caption-text\"&gt;NASA’s EARTHDATA VEDA Dashboard.&lt;/figcaption&gt;&lt;/figure&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;“Azure’s robust suite of services, including machine learning, data analytics and scalable cloud infrastructure, powers this AI prototype,” said Juan Carlos López, former NASA engineer and current Azure Specialist at Microsoft. “We’ve designed the system to handle complex queries and large datasets efficiently, ensuring that users can quickly find the information they need without getting bogged down by technical complexities. Our goal was to create a seamless, scalable solution that could evolve as NASA’s data, tools and applications grow.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;&lt;strong&gt;Democratizing data for open science&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;The collaboration between NASA IMPACT and Microsoft has resulted in a solution that democratizes access to spaceborne data, enabling a broader range of users to engage with NASA&amp;#8217;s science data. This has significant benefits for the scientific community, as researchers can now spend less time on data retrieval and more on analysis and discovery. For example, climate scientists can quickly access historical data to study trends, while agricultural experts can gain insights into soil moisture levels to improve crop management.&lt;/p&gt;&lt;p&gt;Educators and teachers can use real-world examples to engage students in Earth Science, fostering curiosity and encouraging the next generation of scientists and engineers. Policymakers can leverage the data to make informed decisions on critical issues like climate change, urban development and disaster preparedness, ensuring they have the most accurate information at their fingertips.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;“The vision behind this collaboration was to leverage AI and cloud technologies to bring Earth’s insights to communities that have been underserved, where access to data can lead to tangible improvements,” said Minh Nguyen, Cloud Solution Architect at Microsoft. “By enabling users to interact with the data through simple, plain language queries, we’re helping to democratize access to spaceborne information.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The development of this AI prototype aligns with NASA’s Open Science initiative, which aims to make scientific research more transparent, inclusive and collaborative. By removing barriers to data discovery, NASA and Microsoft are setting the stage for a new era of discovery, where insights are not confined to a select few but can be explored and expanded by anyone curious about the world.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Looking ahead: Bridging the gap between data and insights&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;At the moment, the NASA Earth Copilot is available to NASA scientists and researchers to explore and test its capabilities. Any responsible deployment of AI technologies requires rigorous assessments to ensure the data and outputs cannot be misused. After a period of internal evaluations and testing, the NASA IMPACT team will explore the integration of this capability into the &lt;a href=\"https://www.earthdata.nasa.gov/dashboard\"&gt;VEDA platform&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This collaboration exemplifies how technology can empower people, drive innovation and create positive change. Solutions like this will be essential in ensuring the benefits of data are shared widely, enabling more people to engage with, analyze and act upon information that shapes our world.&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/14/from-questions-to-discoveries-nasas-new-earth-copilot-brings-microsoft-ai-capabilities-to-democratize-access-to-complex-data/\"&gt;From questions to discoveries: NASA’s new Earth Copilot brings Microsoft AI capabilities to democratize access to complex data&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>Microsoft introduces new adapted AI models for industry</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/13/microsoft-introduces-new-adapted-ai-models-for-industry/</link>\t\t\t\t<dc:creator>Satish Thomas</dc:creator>\t\t<pubDate>Wed, 13 Nov 2024 16:00:01 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>AI</category>\t\t<category>Azure</category>\t\t<category>Azure AI Studio</category>\t\t<category>Microsoft Cloud</category>\t\t<category>Microsoft Copilot</category>\t\t<category>Microsoft Copilot Studio</category>\t\t<category>Trustworthy AI</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562128</guid>\t\t\t\t\t<description>&lt;p&gt;Across every industry, AI is creating a fundamental shift in what’s possible, enabling new use cases and driving business outcomes. While organizations around the world recognize the value and potential of AI, for AI to be truly effective it must be tailored to specific industry needs. Today, we’re announcing adapted AI models, expanding our industry...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/13/microsoft-introduces-new-adapted-ai-models-for-industry/\"&gt;Microsoft introduces new adapted AI models for industry&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;Across every industry, AI is creating a fundamental shift in what’s possible, enabling new use cases and driving business outcomes. While organizations around the world recognize the value and potential of AI, for AI to be truly effective it must be tailored to specific industry needs.&lt;/p&gt;&lt;p&gt;Today, we’re announcing adapted AI models, expanding our industry capabilities and enabling organizations to address their unique needs more accurately and effectively. In collaboration with industry partner experts like Bayer, Cerence, Rockwell Automation, Saifr, Siemens Digital Industries Software, Sight Machine and more, we’re making these fine-tuned models, pre-trained using industry-specific data, available to address customers’ top use cases.&lt;/p&gt;&lt;p&gt;Underpinning these adapted AI models is the Microsoft Cloud, our platform for industry innovation. By integrating the Microsoft Cloud with our industry-specific capabilities and a robust ecosystem of partners, we provide a secure approach to advancing innovation across industries. This collaboration allows us to create extensive scenarios for customers globally, with embedded AI capabilities — from industry data solutions in Microsoft Fabric to AI agents in Microsoft Copilot Studio to AI models in Azure AI Studio — that enable industries to realize their full potential.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Introducing adapted AI models for industry&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;We’re pleased to introduce these new partner-enabled models from leading organizations that are leveraging the power of Microsoft’s Phi family of small language models (SLMs). These models will be available through the &lt;a href=\"https://ai.azure.com/explore/models\"&gt;Azure AI model catalog,&lt;/a&gt; where customers can access a wide range of AI models to build custom AI solutions in Azure AI Studio, or directly from our partners. The models available in the Azure AI model catalog can also be used to configure agents in Microsoft Copilot Studio, a platform that allows customers to create, customize and deploy AI-powered agents, which can be applied to an industry’s top use cases to address its most pressing needs.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=\"https://www.bayer.com/en/agriculture-overview\"&gt;&lt;strong&gt;Bayer&lt;/strong&gt;&lt;/a&gt;, a global enterprise with core competencies in the life science fields of healthcare and agriculture, will make E.L.Y. Crop Protection available in the Azure AI model catalog. A specialized SLM, it is designed to enhance crop protection sustainable use, application, compliance and knowledge within the agriculture sector. Built on Bayer’s agricultural intelligence, and trained on thousands of real-world questions on Bayer crop protection labels, the model provides ag entities, their partners and developers a valuable tool to tailor solutions for specific food and agricultural needs. The model stands out due to its commitment to responsible AI standards, scalability to farm operations of all types and sizes and customization capabilities that allow organizations to adapt the model to regional and crop-specific requirements.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.cerence.com\"&gt;&lt;strong&gt;Cerence&lt;/strong&gt;&lt;/a&gt;, which creates intuitive, seamless and AI-powered user experiences for the world’s leading automakers, is enhancing its in-vehicle digital assistant technology with fine-tuned SLMs within the vehicle’s hardware. CaLLM&lt;img src=\"https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png\" alt=\"™\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" /&gt; Edge, an automotive-specific, embedded SLM, will be available in the Azure AI model catalog. It can be used for in-car controls, such as adjusting air conditioning systems, and scenarios that involve limited or no cloud connectivity, enabling drivers to access the rich, responsive experiences they’ve come to expect from cloud-based large language models (LLMs), no matter where they are.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.rockwellautomation.com/en-us.html\"&gt;&lt;strong&gt;Rockwell Automation&lt;/strong&gt;&lt;/a&gt;, a global leader in industrial automation and digital transformation, will provide industrial AI expertise via the Azure AI model catalog. The FT Optix Food &amp;amp; Beverage model brings the benefits of industry-specific capabilities to frontline workers in manufacturing, supporting asset troubleshooting in the food and beverage domain. The model provides timely recommendations, explanations and knowledge about specific manufacturing processes, machines and inputs to factory floor workers and engineers.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.saifr.ai\"&gt;&lt;strong&gt;Saifr&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, &lt;/strong&gt;a RegTech within Fidelity Investments’ innovation incubator, Fidelity Labs, will introduce four new models in the Azure AI model catalog, empowering financial institutions to better manage regulatory compliance of broker-dealer communications and investment adviser advertising. The models can highlight potential regulatory compliance risks in text (Retail Marketing Compliance model) and images (Image Detection model); explain why something was flagged (Risk Interpretation model); and suggest alternative language that might be more compliant (Language Suggestion model). Together, these models can enhance regulatory compliance by acting as an extra set of review eyes and boost efficiency by speeding up review turnarounds and time to market.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.sw.siemens.com/en-US/\"&gt;&lt;strong&gt;Siemens Digital Industries Software&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, &lt;/strong&gt;which helps organizations of all sizes digitally transform using software, hardware and services from the Siemens Xcelerator business platform, is &lt;a href=\"https://newsroom.sw.siemens.com/en-US/nx-x-microsoft-azure/\"&gt;introducing&lt;/a&gt; a new copilot for NX X software, which leverages an adapted AI model that enables users to ask natural language questions, access detailed technical insights and streamline complex design tasks for faster and smarter product development. The copilot will provide CAD designers with AI-driven recommendations and best practices to optimize the design process within the NX X experience, helping engineers implement best practices faster to ensure expected quality from design to production. The NX X copilot will be available in the Azure Marketplace and other channels.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://sightmachine.com/\"&gt;&lt;strong&gt;Sight Machine&lt;/strong&gt;&lt;/a&gt;, a leader in data-driven manufacturing and industrial AI, will release &lt;a href=\"https://sightmachine.com/product/factory-namespace-manager/\"&gt;Factory Namespace Manager&lt;/a&gt; to the Azure AI model catalog. The model analyzes existing factory data, learns the patterns and rules behind the naming conventions and then automatically translates these data field names into standardized corporate formats. This translation makes the universe of plant data in the manufacturing enterprise AI-ready, enabling manufacturers to optimize production and energy use in plants, balance production with supply chain logistics and demand and integrate factory data with enterprise data systems for end-to-end optimization. The bottling company &lt;strong&gt;Swire Coca-Cola USA&lt;/strong&gt; plans to use Factory Namespace Manager to efficiently map its extensive PLC and plant floor data into its corporate data namespace.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also encourage innovation in the open-source ecosystem and are offering five open-source &lt;strong&gt;Hugging Face &lt;/strong&gt;models that are fine-tuned for summarization and sentiment analysis of financial data.&lt;/p&gt;&lt;figure id=\"attachment_52562198\" aria-describedby=\"caption-attachment-52562198\" style=\"width: 995px\" class=\"wp-caption alignnone\"&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models.png\"&gt;&lt;img loading=\"lazy\" decoding=\"async\" class=\"wp-image-52562198 size-full\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models.png\" alt=\"An image of the Azure AI model catalog.\" width=\"995\" height=\"560\" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models.png 995w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models-300x169.png 300w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models-768x432.png 768w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models-960x540.png 960w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/Model-catalog-Industry-models-480x270.png 480w\" sizes=\"(max-width: 995px) 100vw, 995px\" /&gt;&lt;/a&gt;&lt;figcaption id=\"caption-attachment-52562198\" class=\"wp-caption-text\"&gt;Partner-enabled adapted AI models for industry will be available through the Azure AI model catalog or directly from partners.&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Additionally, last month we announced &lt;a href=\"https://news.microsoft.com/2024/10/10/microsoft-expands-ai-capabilities-to-shape-a-healthier-future/\"&gt;new healthcare AI models in Azure AI Studio&lt;/a&gt;. These state-of-the-art multimodal medical imaging foundation models, created in partnership with organizations like &lt;strong&gt;Providence&lt;/strong&gt; and &lt;strong&gt;Paige.ai&lt;/strong&gt;, empower healthcare organizations to integrate and analyze a variety of data types, leveraging intelligence in modalities other than text in specialties like ophthalmology, pathology, radiology and cardiology.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Accelerating transformation with industry agents&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Microsoft also offers AI agents that are purpose-built for industry scenarios. Available in Copilot Studio, these agents can be configured to support organizations’ industry-specific needs. For example, retailers can use the Store Operations Agent to support retail store associates and the Personalized Shopping Agent to enhance customers’ shopping experiences. Manufacturers can use the Factory Operations Agent to enhance production efficiency and reduce downtime by enabling engineers and frontline workers to quickly identify and troubleshoot issues.&lt;/p&gt;&lt;p&gt;All this AI innovation wouldn’t be possible without a solid data estate, because AI is only as good as the data it’s built upon. By ensuring data is accurate, accessible and well integrated, organizations can unlock deeper insights and drive more effective decision-making with AI. Microsoft Fabric, a data platform built for the era of AI, helps unify disparate data sources and prepares data for advanced analytics and AI modeling. It offers industry data solutions that address each organization’s unique needs and allows them to discover, deploy and do more with AI.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;At the forefront of addressing industry needs securely&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;At the core of our AI strategy is &lt;a href=\"https://blogs.microsoft.com/blog/2024/09/24/microsoft-trustworthy-ai-unlocking-human-potential-starts-with-trust/\"&gt;a commitment to trustworthy AI&lt;/a&gt;. This commitment encompasses safety, security and privacy, ensuring that AI solutions are built with the highest standards of integrity and responsibility. Trustworthy AI is foundational to everything we do, from how we work with customers to the capabilities we build into our products.&lt;/p&gt;&lt;p&gt;At Microsoft, we combine industry AI experience, insights and capabilities with a deep understanding of customer challenges and objectives. Along with a trusted ecosystem of experienced partners, we unlock the full potential of AI for each industry and business. Our goal is not just to offer or implement AI tools but to help customers succeed by embedding AI into the very core of what each industry does.&lt;/p&gt;&lt;p&gt;AI transformation is here, and Microsoft is at the forefront of this revolution. As we continue to navigate this new era of innovation, it’s clear that AI will play a pivotal role in shaping the future of business across all industries and that Microsoft will continue to lead the way. To learn more about how customers in a variety of industries are transforming with AI, visit &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/how-real-world-businesses-are-transforming-with-ai\"&gt;How real-world businesses are transforming with AI&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/13/microsoft-introduces-new-adapted-ai-models-for-industry/\"&gt;Microsoft introduces new adapted AI models for industry&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>How real-world businesses are transforming with AI – with 40+ new stories</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/12/https-blogs-microsoft-com-blog-2024-11-12-how-real-world-businesses-are-transforming-with-ai/</link>\t\t\t\t<dc:creator>Alysa Taylor</dc:creator>\t\t<pubDate>Tue, 12 Nov 2024 17:00:41 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>AI</category>\t\t<category>AI Azure</category>\t\t<category>Azure OpenAI Service</category>\t\t<category>Copilot</category>\t\t<category>Copilot Studio</category>\t\t<category>Microsoft 365 Copilot</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562186</guid>\t\t\t\t\t<description>&lt;p&gt;Updated November 26, 2024: The post contains 42 new customer stories, which appear in italics at the beginning of each section of customer lists. The post will be updated regularly with new stories. One of the highlights of my career has always been connecting with customers and partners across industries to learn how they are...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/https-blogs-microsoft-com-blog-2024-11-12-how-real-world-businesses-are-transforming-with-ai/\"&gt;How real-world businesses are transforming with AI &amp;#8211; with 40+ new stories&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;&lt;em&gt;Updated November 26, 2024: The post contains 42 new customer stories, which appear in italics at the beginning of each section of customer lists. The post will be updated regularly with new stories.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;One of the highlights of my career has always been connecting with customers and partners across industries to learn how they are using technology to drive their businesses forward. In the past 30 years, we’ve seen four major platform shifts, from client server to internet and the web to mobile and cloud to now — the next major platform shift to AI. &lt;/span&gt;&lt;span data-ccp-props=\"{}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;As today’s platform shift to AI continues to gain momentum, Microsoft is working to understand just how organizations can drive lasting business value. We recently commissioned a study with IDC,&lt;/span&gt; &lt;a href=\"https://info.microsoft.com/ww-landing-business-opportunity-of-ai.html\"&gt;&lt;b&gt;&lt;span data-contrast=\"none\"&gt;The Business Opportunity of AI&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt;, to uncover new insights around business value and help guide organizations on their journey of AI transformation. &lt;/span&gt;&lt;a href=\"https://aka.ms/ai-study\"&gt;&lt;span data-contrast=\"none\"&gt;The study found&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; that for every $1 organizations invest in generative AI, they’re realizing an average of $3.70 in return — and uncovered insights about the future potential of AI to reshape business processes and drive change across industries. &lt;/span&gt;&lt;span data-ccp-props=\"{}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Today, &lt;/span&gt;&lt;a href=\"https://aka.ms/AIinAction\"&gt;&lt;span data-contrast=\"none\"&gt;more than 85% of the Fortune 500&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; are using Microsoft AI solutions to shape their future. In working with organizations large and small, across every industry and geography, we’ve seen that most transformation initiatives are designed to achieve one of four business outcomes: &lt;/span&gt;&lt;span data-ccp-props=\"{}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Enriching employee experiences:&lt;/strong&gt; Using AI to streamline or automate repetitive, mundane tasks can allow your employees to dive into more complex, creative and ultimately more valuable work.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Reinventing customer engagement:&lt;/strong&gt; AI can create more personalized, tailored customer experiences, delighting your target audiences while lightening the load for employees.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Reshaping business processes:&lt;/strong&gt; Virtually any business process can be reimagined with AI, from marketing to supply chain operations to finance, and AI is even allowing organizations to go beyond process optimization and discover exciting new growth opportunities.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Bending the curve on innovation:&lt;/strong&gt; AI is revolutionizing innovation by speeding up creative processes and product development, reducing the time to market and allowing companies to differentiate in an often crowded field.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In this blog, we’ve collected more than 200 of our favorite real-life examples of how organizations are embracing Microsoft’s proven AI capabilities to drive impact and shape today’s platform shift to AI. &lt;strong&gt;Today, we’ve added new stories of customers using our AI capabilities at the beginning of each section. We’ll regularly update this story with more. &lt;/strong&gt;We hope you find an example or two that can inspire your own transformation journey.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Enriching employee experiences&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Generative AI is truly transforming employee productivity and wellbeing. Our customers tell us that by automating repetitive, mundane tasks, employees are freed up to dive into more complex and creative work. This shift not only makes the work environment more stimulating but also boosts job satisfaction. It sparks innovation, provides actionable insights for better decision-making and supports personalized training and development opportunities, all contributing to a better work-life balance. Customers around the world have reported significant improvements in employee productivity with these AI solutions:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Stories:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li style=\"list-style-type: none;\"&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://news.microsoft.com/2024/11/14/accenture-microsoft-and-avanade-help-enterprises-reinvent-business-functions-and-industries-with-generative-ai-and-copilot/\"&gt;&lt;strong&gt;Accenture and Avanade&lt;/strong&gt;&lt;/a&gt; launched a Copilot business transformation practice, supported by Microsoft, and co-invested in new capabilities, solutions and training to help organizations securely and responsibly reinvent their business functions with generative and agentic AI and Copilot technologies.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-365/blog/2024/11/19/introducing-copilot-actions-new-agents-and-tools-to-empower-it-teams/\"&gt;Bank of Queensland Group&lt;/a&gt;&lt;/strong&gt; is using Microsoft 365 Copilot, with 70% of users saving two-and-a-half to five hours per week.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837247326532243131-canadian-tire-corporation-azure-retailers-en-canada\"&gt;&lt;strong&gt;Canadian Tire Corporation&lt;/strong&gt;&lt;/a&gt; moved its data from on-premises systems to Microsoft Azure and built digital assistants using Azure OpenAI Service, and now more than 3,000 corporate employees save 30 to 60 minutes a day using its ChatCTC digital assistant.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837606451567673137-cathaypacific-microsoft-365-copilot-travel-and-transportation-en-hong-kong-sar\"&gt;Cathay&lt;/a&gt;&lt;/strong&gt; leverages Microsoft 365 Copilot to streamline meetings and manage information more effectively, reducing time-consuming tasks and fostering creativity.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837667199713758792-clifford-chance-mcrosoft-365-copilot-professional-services-en-united-kingdom\"&gt;Clifford Chance&lt;/a&gt;&lt;/strong&gt; adopted Microsoft 365 Copilot to streamline tasks, automate processes and enhance collaboration. Lawyers use it to draft and manage emails and ensure compliance, allowing them to focus on complex legal work and improve productivity.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1832762432689198259-dlapiper-microsoft-365-copilot-professional-services-en-united-states\"&gt;DLA Piper&lt;/a&gt;&lt;/strong&gt; chose Microsoft 365 Copilot to boost productivity for operational and administrative teams, saving up to 36 hours weekly on content generation and data analysis.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837633288515694884-eaton-microsoft-365-copilot-discrete-manufacturing-en-united-states\"&gt;&lt;strong&gt;Eaton&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot to automate the creation of 1,000 standard operating procedures to streamline customer service operations and improve data access across teams, cutting creation time from one hour to 10 minutes.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835026746816257326-harvey-azure-openai-service-other-en-united-states\"&gt;Harvey&lt;/a&gt;&lt;/strong&gt; uses Azure OpenAI to simplify routine tasks across hundreds of law firms and legal teams, with one corporate lawyer saying he saved 10 hours of work per week.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1838588977497742792-kmslh-azure-openai-service-professional-services-en-israel\"&gt;&lt;strong&gt;KMS&lt;/strong&gt; &lt;strong&gt;Lighthouse&lt;/strong&gt;&lt;/a&gt; enhanced its knowledge management platform with Microsoft Teams and Dynamics 365 integration, enabling users to leverage KMS Lighthouse without having to switch applications. And with Azure OpenAI Service, companies can create relevant content more quickly within the KMS Lighthouse application.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837976425667863739-localiza-microsoft-365-copilot-automotive-en-brazil\"&gt;Localiza&amp;amp;Co&lt;/a&gt;,&lt;/strong&gt; a leader in the mobility industry in Latin America, implemented Microsoft 365 Copilot to automate processes and improve efficiency, and reduced 8.3 working hours per employee per month.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1834508996209335697-medigold-health-azure-ai-services-health-provider-en-united-kingdom\"&gt;&lt;strong&gt;Medigold&lt;/strong&gt; &lt;strong&gt;Health&lt;/strong&gt;&lt;/a&gt; uses Azure OpenAI Service to significantly reduce the time that clinicians spend writing reports during their consultation and administrative time.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1834023197365666109-pimco-azure-ai-search-banking-and-capital-markets-en-united-states\"&gt;PIMCO&lt;/a&gt;&lt;/strong&gt; built ChatGWM with Azure AI Studio, a comprehensive platform that provides the ability to ask questions, receive responses and verify answers all in one place, so teams can spend more time engaging clients and having deeper conversations.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1833614171187901763-sace-microsoft-viva-suite-insurance-en-italy\"&gt;SACE&lt;/a&gt;&lt;/strong&gt;, an Italian finance and insurance firm, is using Microsoft 365 Copilot and Viva to boost productivity and unlock employee potential while enhancing overall well-being — and productivity improvement data from the first nine months of implementation shows a 23% increase.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1802756598954587083-access-holdings-plc-microsoft-365-banking-and-capital-markets-en-nigeria&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062272075%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=uXii3vcg4Q3aj7tp7l5VAVbuOyRvmHU3slqCDwqIFjg%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Access Holdings Plc&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot, integrating generative AI into daily tools and, as a result, writing code now takes two hours instead of eight, chatbots launch in 10 days instead of three months and presentations are prepared in 45 minutes instead of six hours.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/2024/03/26/adobe-and-microsoft-partner-to-bring-new-generative-ai-capabilities-to-marketers-as-they-work-in-microsoft-365-applications/\"&gt;&lt;strong&gt;Adobe&lt;/strong&gt;&lt;/a&gt; is connecting Adobe Experience Cloud workflows and insights with Microsoft 365 Copilot to deliver generative-AI powered capabilities that enable marketers to increase collaboration, efficiency and creativity.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749403583645228440-amadeus-microsoft-365-professional-services-en-france\"&gt;&lt;strong&gt;Amadeus&lt;/strong&gt;&lt;/a&gt; empowers its teams to focus their time and skills on value-added tasks with Microsoft 365 Copilot, by summarizing email threads, chat or transcripts and summing up information from diverse sources.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/anz-launches-first-of-its-kind-ai-immersion-centre-in-partnership-with-microsoft/\"&gt;&lt;strong&gt;ANZ&lt;/strong&gt;&lt;/a&gt; has invested in Microsoft 365 Copilot, GitHub Copilot and Copilot in Microsoft Edge to boost productivity and innovation across its workforce.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1794442287816192713-asahi-europe-and-international-microsoft-copilot-for-microsoft-365-consumer-goods-en-czechia\"&gt;&lt;strong&gt;Asahi Europe &amp;amp; International (AEI)&lt;/strong&gt;&lt;/a&gt; has adopted Microsoft 365 Copilot, saving employees potentially 15% of time previously spent on administrative tasks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1760377839901581759-axa-gie-azure-insurance-en-france\"&gt;&lt;strong&gt;AXA&lt;/strong&gt;&lt;/a&gt; developed AXA Secure GPT, a platform powered by Azure OpenAI Service that empowers employees to leverage the power of generative AI while targeting the highest level of data safety and responsible use of the tool.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1827945851075596388-axon-azure-openai-service-national-government-en-united-states\"&gt;&lt;strong&gt;Axon Enterprise&lt;/strong&gt;&lt;/a&gt; developed a new AI tool with Azure OpenAI Service called Draft One, resulting in an 82% decrease in time spent on reports, which freed up officers to engage more with their community.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1815128464686923048-aztec-group-microsoft-365-copilot-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;Aztec Group&lt;/strong&gt;&lt;/a&gt; enhanced productivity and client experience by trialing Microsoft 365 Copilot with 300 staff, uncovering “unlimited” use cases and plans for a wider rollout.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1804968308500747501-sultan-microsoft-copilot-health-provider-en-kuwait&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C7b04ac48f784445af5a008dcf2237a96%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638651481396507436%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=LmqAeVg2CS6IrwfwIOxSztz8qzQxdmpP90z906KtLQQ%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Bader Sultan &amp;amp; Bros. Co. W.L.L&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot to enhance employee productivity and speed up customer response times.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/10/17/colombia-and-brazil-embrace-the-potential-of-cloud-and-ai-solutions-to-drive-growth-and-tackle-social-challenges/\"&gt;&lt;strong&gt;Bancolombia&lt;/strong&gt;&lt;/a&gt; is using GitHub Copilot to empower its technical team, achieving a 30% increase in code generation, boosting automated application changes to an average of 18,000 per year, with a rate of 42 productive daily deployments.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1804597267941884304-baptistcare-sharepoint-nonprofit-en-australia&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062359439%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=VDzN%2BADOGokVarGbLEmM4gqpi6OombeQhdYd%2Fo5sT8k%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;BaptistCare Community Services&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot to save employees time as they navigate workforce shortage challenges, allowing them to focus more on the people they care for.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://ukstories.microsoft.com/features/barnsley-council-releasing-the-potential-with-microsoft-copilot/\"&gt;&lt;strong&gt;Barnsley Council&lt;/strong&gt;&lt;/a&gt; was recognized as “Double Council of the Year in 2023” for its implementation of Microsoft 365 Copilot, which modernized operations and reduced administrative tasks, leading to improved job satisfaction and increased creativity.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fnews.microsoft.com%2Fsource%2Ffeatures%2Fdigital-transformation%2Fhow-blackrocks-flight-crew-helped-copilot-for-microsoft-365-take-off%2F&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062415337%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=yIbi1evXRe%2BoRXqpF8mcXl7XjRQmrsGGEJn%2FrGAKz4M%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;BlackRock&lt;/strong&gt;&lt;/a&gt; purchased more than 24,000 Microsoft 365 Copilot licenses spanning all employees, functions and locations, helping improve the Copilot experience, including codeveloping new features and functions.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1824902121184173261-british-heart-foundation-microsoft-copilot-nonprofit-en-united-kingdom\"&gt;&lt;strong&gt;British Heart Foundation&lt;/strong&gt;&lt;/a&gt; is testing Microsoft 365 Copilot and in its initial test, users estimate that Microsoft 365 Copilot could save them up to 30 minutes per day.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1820202403198385865-buckinghamshire-council-microsoft-365-copilot-government-en-united-kingdom\"&gt;&lt;strong&gt;Buckinghamshire Council&lt;/strong&gt;&lt;/a&gt; deployed Microsoft 365 Copilot with staff reporting productivity improvements, quality enhancements and time savings, which are enabling the different teams to do more with less.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/it-it/2024/10/23/microsoft-ceo-satya-nadella-showcases-transformative-power-of-artificial-intelligence-for-italys-growth-at-microsoft-ai-tour-in-rome/?msockid=1033af7595936fd71c19bd9c94546e18\"&gt;&lt;strong&gt;Campari Group&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot to help employees integrate it into their workflow, resulting in time savings of about two hours a week from the support of routine activities such as email management, meeting preparation, content creation and skill acquisition.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1798374461640442079-capita-group-github-copilot-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Capita&lt;/strong&gt;&lt;/a&gt; is using GitHub Copilot for productivity improvements as well as improvements in developer satisfaction, recruitment and retention.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1828282129545930288-cdw-corporation-microsoft-viva-learning-consumer-goods-en-united-states\"&gt;&lt;strong&gt;CDW&lt;/strong&gt;&lt;/a&gt; used Microsoft 365 Copilot to improve work quality for 88% of users, enabling 77% to complete tasks faster and increasing productivity for 85% of users.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/asia/features/taiwan-hospital-deploys-ai-copilots-to-lighten-workloads-for-doctors-nurses-and-pharmacists/\"&gt;&lt;strong&gt;Chi Mei Medical Center&lt;/strong&gt;&lt;/a&gt; is lightening workloads for doctors, nurses and pharmacists with a generative AI assistant built on Azure OpenAI Service.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1790435165492425096-eon-se-microsoft-copilot-for-microsoft-365-energy-en-germany\"&gt;&lt;strong&gt;E.ON&lt;/strong&gt;&lt;/a&gt; is focused on Germany’s energy transition, leveraging Microsoft 365 Copilot to manage the complex grid in real-time, increasing productivity and efficiency for its workforce.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1762150085964970175-enerjisa-uretim-microsoft-copilot-energy-en-turkiye\"&gt;&lt;strong&gt;Enerijisa Uretim&lt;/strong&gt;&lt;/a&gt; has adopted Microsoft 365 Copilot to streamline meeting summaries, reformat documents and compile reports, enabling employees to concentrate on more strategic and fulfilling activities instead of spending six hours in meetings.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1795477416065405316-epam-systems-microsoft-copilot-for-microsoft-365-professional-services-en-hungary\"&gt;&lt;strong&gt;EPAM&lt;/strong&gt;&lt;/a&gt; is deploying Microsoft 365 Copilot to consolidate information and generate content and documents.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1826307332667818248-farm-credit-canada-microsoft-365-copilot-government-en-canada\"&gt;&lt;strong&gt;Farm Credit Canada&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot, which resulted in time savings on routine tasks for 78% of users, with 30% saving 30 to 60 minutes per week and 35% saving over an hour per week, allowing employees to focus on more value-added tasks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-us%2Fstory%2F1813696493334607461-finastra-microsoft-copilot-for-microsoft-365-professional-services-en-united-kingdom&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062428568%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=U5kpF%2B3HpIfSYQlB6j47uW5HQ5ELonUZo%2FMO%2FOqsUwI%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Finastra&lt;/strong&gt;&lt;/a&gt; used Microsoft 365 Copilot to automate tasks, enhance content creation, improve analytics and personalize customer interactions, with employees citing a 20% to 50% time savings.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1816271784634453515-four-agency-microsoft-365-copilot-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Four Agency Worldwide&lt;/strong&gt;&lt;/a&gt; increased employee productivity using Microsoft 365 Copilot to generate ideas for creative work and support administrative-heavy processes, data analysis and report generation, allowing staff to focus on outreach and less time doing paperwork.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1772353582649569700-ocgoodwill-azure-ai-services-nonprofit-en-united-states\"&gt;&lt;strong&gt;Goodwill of Orange County&lt;/strong&gt;&lt;/a&gt; developed an AI-powered app using Azure AI capabilities to help more people, including those with developmental, intellectual and physical disabilities, work in unfilled e-commerce positions.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-365/blog/2024/09/16/microsoft-365-copilot-wave-2-pages-python-in-excel-and-agents/\"&gt;&lt;strong&gt;Honeywell&lt;/strong&gt;&lt;/a&gt; employees are saving 92 minutes per week — that&amp;#8217;s 74 hours a year! &lt;em&gt;Disclaimer: Statistics are from an internal Honeywell survey of 5,000 employees where 611 employees responded.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1821284073143161043-insight-enterprises-inc-surface-laptop-professional-services-en-united-states\"&gt;&lt;strong&gt;Insight&lt;/strong&gt;&lt;/a&gt; employees using Copilot are seeing four hours of productivity gained per week from data summarization and content creation.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1759309014350031747-joos-microsoft-copilot-consumer-goods-en-united-kingdom\"&gt;&lt;strong&gt;Joos&lt;/strong&gt;&lt;/a&gt; uses Microsoft 365 Copilot to grow its brand with worldwide collaboration by streamlining meetings, optimizing presentations and improving communications.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1744468024452864249-kantar-windows-11-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Kantar&lt;/strong&gt;&lt;/a&gt; is harnessing the power of Microsoft 365 Copilot by reducing costly, time-consuming IT processes and boosting productivity for employees.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749522406496386350-kpmg-microsoft-365-copilot-professional-services-en-united-states\"&gt;&lt;strong&gt;KPMG Australia&lt;/strong&gt;&lt;/a&gt; is using Microsoft Azure OpenAI Service, Azure AI Search and Microsoft Copilot 365 to perform advanced text analysis of dozens of client source documents to identify full or partial compliance, or noncompliance, in a fraction of the time required for manual assessments.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1825162116194410361-lgt-excel-banking-and-capital-markets-en-liechtenstein\"&gt;&lt;strong&gt;LGT&lt;/strong&gt;&lt;/a&gt; is launching Microsoft Copilot LGT to improve efficiency, showing users save an average of an hour a week even in the pilot phase.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804624062321190625-lotte-hotels-and-resorts-azure-ai-studio-travel-and-transportation-en-korea\"&gt;&lt;strong&gt;Lotte Hotels &amp;amp; Resorts&lt;/strong&gt;&lt;/a&gt; has been creating a new work culture that allows employees to work more efficiently and focus on the nature of the work by adopting Microsoft Power Platform for automation.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1782421038868081701-maire-microsoft-teams-energy-en-italy\"&gt;&lt;strong&gt;MAIRE&lt;/strong&gt;&lt;/a&gt; is leveraging Microsoft 365 Copilot to automate routine tasks, saving over 800 working hours per month, freeing up engineers and professionals for strategic activities while supporting MAIRE&amp;#8217;s green energy transition by reducing their carbon footprint.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749886282579475320-mcdonalds-china-azure-retailers-en-china\"&gt;&lt;strong&gt;McDonald’s China&lt;/strong&gt;&lt;/a&gt; chose Microsoft Azure AI, GitHub Copilot and Azure AI Search to transform its operations, resulting in a significant increase in AI adoption, consumption and retention from 2,000 to 30,000 employee transactions monthly.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812248324658189027-mcknight-microsoft-copilot-for-microsoft-365-nonprofit-en-united-states\"&gt;&lt;strong&gt;McKnight Foundation&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot for all staff, saving time, increasing productivity and freeing space to focus on strategic priorities.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1759306888687672662-morulahealth-microsoft-365-business-premium-health-provider-en-united-kigdom\"&gt;&lt;strong&gt;Morula Health&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot to enhance productivity, streamline medical writing tasks and ensure data security, ultimately improving efficiency and client satisfaction.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1770472924267393932-motor-oil-group-microsoft-365-energy-en-greece\"&gt;&lt;strong&gt;Motor Oil Group&lt;/strong&gt;&lt;/a&gt; is achieving remarkable efficiency gains by integrating Microsoft 365 Copilot into its workflows, with staff spending minutes on tasks that used to take weeks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792966154673709027-nagel-group-azure-openai-service-travel-and-transportation-en-germany\"&gt;&lt;strong&gt;Nagel-Group&lt;/strong&gt;&lt;/a&gt; uses Azure OpenAI Service to help employees quickly access information which saves time, creates efficiency and transparency, and leads to higher-quality answers overall.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-us%2Fstory%2F1781804873110601091-national-australia-bank-microsoft-edge-banking-and-capital-markets-en-australia&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062457127%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=YZjgVqcJ9J%2F5s14J2HZ5kOtuDUtjkDJCCsA7ea1H2i4%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;National Australia Bank&lt;/strong&gt;&lt;/a&gt; is leveraging Microsoft 365 Copilot for daily productivity and data analysis and insights and Microsoft Copilot for Security to quickly analyze millions of security event logs and allow engineers to focus on more important areas.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1800598946211744899-nflpa-azure-ai-services-nonprofit-en-united-states\"&gt;&lt;strong&gt;NFL Players Association&lt;/strong&gt;&lt;/a&gt; integrated Azure AI Services and Azure App Service into their video review process, reducing review time by up to 73%, significantly increasing efficiency and enhancing player safety through consistent rule enforcement.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1759188982673652446-o2-microsoft-365-telecommunications-en-czech-republic\"&gt;&lt;strong&gt;O2 Czech Republic&lt;/strong&gt;&lt;/a&gt; boosts productivity and streamlines meetings with Microsoft 365 Copilot, revolutionizing how information is shared and making automation a part of daily work.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1744450394922857891-onepoint-github-copilot-professional-services-en-france\"&gt;&lt;strong&gt;Onepoint&lt;/strong&gt;&lt;/a&gt; developed a secure conversational agent based on Azure OpenAI, which delivers productivity gains of between 10% and 15% across all business lines.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1774095788906881160-orange-azure-openai-service-telecommunications-en-france\"&gt;&lt;strong&gt;Orange Group&lt;/strong&gt;&lt;/a&gt; has over 40 use cases with Azure OpenAI Service and GitHub Copilot across business functions to support employees in their day-to-day tasks, enabling them to concentrate on higher value-added activities.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1820166640605522715-ouh-microsoft-365-copilot-health-provider-en-united-kingdom\"&gt;&lt;strong&gt;Oxford University Hospitals NHS Foundation Trust&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot to improve staff report productivity by saving one to two hours a week, or simple formatting tasks down to a matter of seconds, enabling more resources to deliver frontline services.&lt;/li&gt;&lt;li&gt; &lt;a href=\"https://customers.microsoft.com/en-us/story/1790507377097905834-paconsulting-dynamics-365-sales-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;PA Consulting&lt;/strong&gt;&lt;/a&gt; transformed its sales operations with Microsoft 365 Copilot, so its people can invest more time on the activities that have the biggest impact for clients and maximize the strategic value they provide.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1758695276753608190-petrobras-azure-openai-service-energy-en-brazil\"&gt;&lt;strong&gt;Petrobras&lt;/strong&gt;&lt;/a&gt; used Azure OpenAI Service to create ChatPetrobras, which is streamlining workflows, reducing manual tasks and summarizing reports for its 110,000 employees.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1776965075841351020-petrochemical-industries-company-microsoft-365-energy-en-kuwait\"&gt;&lt;strong&gt;Petrochemical Industries Company&lt;/strong&gt;&lt;/a&gt; automates work processes to save time with Microsoft 365 Copilot from weeks to days, hours to seconds.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1795890438217888078-pkshatech-microsoft-copilot-for-microsoft-365-other-en-japan\"&gt;&lt;strong&gt;PKSHA Technology&lt;/strong&gt;&lt;/a&gt; is optimizing their time on critical work by increasing efficiency in meeting preparations, data analytics and ideation with the help of Microsoft 365 Copilot.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.nuance.com/2024-03-08-Providence-and-Microsoft-Enable-AI-Innovation-at-Scale-to-Improve-the-Future-of-Care\"&gt;&lt;strong&gt;Providence&lt;/strong&gt;&lt;/a&gt; has collaborated with Nuance and Microsoft to accelerate development and adoption of generative AI-powered applications, helping improve care quality and access and reduce physician’s administrative workloads.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1802830664758543360-rti-international-microsoft-teams-nonprofit-en-united-states\"&gt;&lt;strong&gt;RTI International&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot to gain productivity wherever possible, allowing staff to focus on their areas of expertise, delivering even better science-backed solutions for clients.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785448033474736158-sandvik-coromant-microsoft-copilot-for-sales-discrete-manufacturing-en-sweden\"&gt;&lt;strong&gt;Sandvik Coromant&lt;/strong&gt;&lt;/a&gt; is using Microsoft Copilot for Sales to drive efficiency and accuracy, shaving at least one minute off each transaction, allowing sellers and account managers to focus their expertise on responding to customers’ needs with analysis, creativity and adaptability.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1735001154382665808-sasfin-bank-azure-banking-en-south-africa\"&gt;&lt;strong&gt;Sasfin Bank&lt;/strong&gt;&lt;/a&gt; built a solution on Microsoft Azure that centralized 20,000 documents to analyze contract clauses and provide real-time snapshots, moving guesswork into data-driven decision-making.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1758915282906956032-scottishwater-microsoft-copilot-energy-en-united-kingdom\"&gt;&lt;strong&gt;Scottish Water&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot, reducing mundane tasks to a minimum and thus freeing up time for employees to work on the more meaningful tasks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1768027434711024743-shrinerschildrens-azure-health-provider-en-united-states\"&gt;&lt;strong&gt;Shriners Children&amp;#8217;s&lt;/strong&gt;&lt;/a&gt; developed an AI platform allowing clinicians to easily and securely navigate patient data in a singular location, enhancing patient care and improving the efficiency of their healthcare services.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/2024/10/24/siemens-and-microsoft-scale-industrial-ai/\"&gt;&lt;strong&gt;Siemens&lt;/strong&gt;&lt;/a&gt; is leveraging Azure OpenAI Service to improve efficiency, cut downtime and address labor shortages.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1798509188103498351-softchoice-microsoft-copilot-for-microsoft-365-consumer-goods-en-united-states\"&gt;&lt;strong&gt;Softchoice&lt;/strong&gt;&lt;/a&gt; employees are experiencing firsthand how Microsoft 365 Copilot can transform daily workflows, realizing productivity gains of 97% reduction in time spent summarizing technical meetings and up to 70% less time spent on content creation.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1823424868741213189-syensqo-azure-open-ai-service-other-en-belgium\"&gt;&lt;strong&gt;Syensqo&lt;/strong&gt;&lt;/a&gt; utilized Microsoft’s Azure OpenAI Service to develop a custom AI chatbot in three months, which improved their internal data management, decision-making and overall efficiency.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1805001416118108722-teladochealth-power-apps-health-provider-en-united-states\"&gt;&lt;strong&gt;Teladoc Health&lt;/strong&gt;&lt;/a&gt; uses Microsoft 365 Copilot to revolutionize its telehealth operations, automating routine tasks, boosting efficiency and increasing productivity.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1740058425924206437-telstra-telecommunications-azure-openai-service\"&gt;&lt;strong&gt;Telstra&lt;/strong&gt;&lt;/a&gt; developed two cutting-edge generative AI tools based on Microsoft Azure OpenAI Service: 90% of employees are using the One Sentence Summary tool, which resulted in 20% less follow-up customer contact, and 84% of customer service agents are using the Ask Telstra solution.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1759333055842391656-topsoe-azure-openai-service-discrete-manufacturing-en-denmark\"&gt;&lt;strong&gt;Topsoe&lt;/strong&gt;&lt;/a&gt; achieved 85% AI adoption among office employees in seven months, significantly enhancing productivity and business processes.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812576965312816472-torfaen-microsoft-copilot-for-microsoft-365-national-government-en-united-kingdom\"&gt;&lt;strong&gt;Torfaen County Borough Council&lt;/strong&gt;&lt;/a&gt; utilized Microsoft 365 Copilot to streamline back-office processes, resulting in significant time savings and enhanced productivity for both business and children&amp;#8217;s services teams, with further rollouts planned.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1790119689031635867-trace3-microsoft-365-professional-services-en-united-states&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062303754%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=X4e%2BQhOCohiSCLiVF0no6l2hVQyLM48hr0w7JLmfyhQ%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Trace3&lt;/strong&gt;&lt;/a&gt; leveraged Microsoft Copilot to streamline and enhance processes across the business and with clients, such as reducing the time it takes HR recruiting managers to respond to applicants within a couple of days instead of several weeks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://youtu.be/Iqzqp69QCKI?si=wN9v8MyFvGYnbllC\"&gt;&lt;strong&gt;Unilever&lt;/strong&gt;&lt;/a&gt; is reinventing their marketing process with Copilot, saving time on briefing tasks, automatically pulling in relevant market data, content and insights to accelerate campaign launches.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1802017730982552224-uniper-se-microsoft-copilot-for-microsoft-365-energy-en-germany&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062374306%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=WtghbJqSCe5t36Ng8eihXahtr2MZtlLK3GqOESNFXk8%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Uniper SE&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot to reduce time spent on manual and repetitive tasks and help workers focus on more pressing work, such as developing enhanced solutions to speed up the energy transition.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1772120481217819586-unumgroup-azure-insurance-en-united-states\"&gt;&lt;strong&gt;Unum Group&lt;/strong&gt;&lt;/a&gt; built a custom AI application to search 1.3 terabytes of data with 95% accuracy using Azure OpenAI Service.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://ukstories.microsoft.com/features/how-virgin-atlantic-is-flying-higher-with-copilot/\"&gt;&lt;strong&gt;Virgin Atlantic&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot and GitHub Copilot and is seeing real business benefits, including productivity improvements, enabling new ways of working.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1770536569687978092-visier-solutions-azure-openai-service-professional-services-en-canada&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062317741%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=5gKpMYfPtQIxjb4AuR8Axy7XwP5GpD9NT8OGIf3bedY%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Visier&lt;/strong&gt;&lt;/a&gt; built a generative AI assistant that leverages Azure AI and Azure OpenAI Services to deliver workforce analytics and actionable insights for more than 50,000 customers.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1828290649088791526-virtualdentalcare-azure-virtual-machines-health-provider-en-united-states\"&gt;&lt;strong&gt;Virtual Dental Care&lt;/strong&gt;&lt;/a&gt; developed an AI application Smart Scan that leverages Microsoft Azure to reduce paperwork for mobile dental clinics in schools by 75% and frees dentists to devote more time to patient care.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1825622008619351392-zshlavkova-microsoft-365-a3-primary-and-secondary-eduk-12-en-czechia\"&gt;&lt;strong&gt;Zakladni Skola As Hlavkova&lt;/strong&gt;&lt;/a&gt; adopted Microsoft 365 Copilot and saw a 60% improvement in handling administrative documents, decreased lesson preparation from hours to a few minutes, increased inclusivity and enhanced communication with students and parents.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;&lt;strong&gt;Reinventing customer engagement&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;We’ve seen great examples of how generative AI can automate content creation, ensuring there’s fresh and engaging materials ready to go. It personalizes customer experiences by crunching the numbers, boosting conversion rates. It makes operations smoother, helping teams launch campaigns faster. Plus, it drives innovation, crafting experiences that delight customers while lightening the load for staff. Embracing generative AI is key for organizations wanting to reinvent customer engagements, stay ahead of the game and drive both innovation and efficiency.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Stories:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1836108400811529412-airindia-azure-ai-search-travel-and-transportation-en-india\"&gt;&lt;strong&gt;Air&lt;/strong&gt; &lt;strong&gt;India&lt;/strong&gt;&lt;/a&gt; leveraged Azure OpenAI Service to develop a virtual assistant that has handled nearly 4 million customer queries with full automation, significantly enhancing customer experience and avoiding millions of dollars in customer support costs.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1832767714677750676-cradle-azure-openai-service-other-unsegmented-en-malaysia\"&gt;&lt;strong&gt;Cradle&lt;/strong&gt; &lt;strong&gt;Fund&lt;/strong&gt;&lt;/a&gt;, dedicated to nurturing startups in Malaysia, introduced an AI-driven chatbot to boost user interaction and increase public engagement. User engagement quadrupled while resolution time was reduced from two days to a few clicks. Cradle also decreased customer service costs by 35%, increased international interactions by 40% and increased daily average visits 10-fold.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1833973787621467669-doctolib-azure-openai-service-health-provider-en-france\"&gt;Doctolib&lt;/a&gt;&lt;/strong&gt;, a leading eHealth company in France, leverages Microsoft technology to develop an AI-powered medical assistant, integrating both Azure OpenAI Service and Mistral Large on Azure.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol start=\"4\"&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837822642507786660-docusign-azure-logic-apps-other-en-united-states\"&gt;Docusign&lt;/a&gt; &lt;/strong&gt;used Azure AI to develop its Intelligent Agreement Management (IAM) platform, which supports millions of workflows, reducing contract processing times and enhancing customer satisfaction with advanced AI-powered analytics.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837367358659329204-hollandamerica-microsoft-dataverse-travel-and-transportation-en-united-states\"&gt;&lt;strong&gt;Holland&lt;/strong&gt; &lt;strong&gt;America&lt;/strong&gt; &lt;strong&gt;Line&lt;/strong&gt;&lt;/a&gt; developed a virtual agent using Microsoft Copilot Studio that acts as a digital concierge on their website to support new and existing customers and travel advisors, which has achieved a strong resolution rate and is currently handling thousands of conversations per week.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1832880073951334987-jato-dynamics-azure-open-ai-service-automotive-en-united-kingdom\"&gt;&lt;strong&gt;Jato&lt;/strong&gt; &lt;strong&gt;Dynamics&lt;/strong&gt;&lt;/a&gt; used Azure OpenAI Service to automate content generation, helping dealerships save approximately 32 hours each month.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1838122771592262367-redcross-azure-ai-services-nonprofit-en-kenya\"&gt;&lt;strong&gt;Kenya&lt;/strong&gt; &lt;strong&gt;Red&lt;/strong&gt; &lt;strong&gt;Cross&lt;/strong&gt;&lt;/a&gt; worked with Pathways Technologies to develop a mental health chatbot in Azure AI.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1834923084335117944-laliga-azure-arc-media-and-entertainment-en-spain\"&gt;LALIGA&lt;/a&gt; &lt;/strong&gt;is delivering a seamless fan experience and AI insights with Azure Arc, using AI in Azure for optimizing match scheduling and other key operations.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1833247205652391288-legrand-cloud-for-manufacturing-discrete-manufacturing-en-france\"&gt;Legrand&lt;/a&gt;&lt;/strong&gt; used Azure OpenAI Service to reduce the time to generate product data by 60% and improve customer support interactions with fast, accurate information.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835832718338159187-mars-azure-machine-learning-professional-services-en-united-states\"&gt;Mars Science &amp;amp; Diagnostics&lt;/a&gt;&lt;/strong&gt; used the Azure AI catalog to build generative AI apps to enhance accuracy and extract data insights quickly, helping pets with critical, undiagnosed conditions receive the care they require faster.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835590701993611997-nba-azure-openai-service-media-and-entertainment-en-united-states\"&gt;&lt;strong&gt;NBA&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to speed up the time to market, helping fans connect with the league with personalized, localized insights to enhance the fan experience.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1827391161519296074-orbitalwitness-azure-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Orbital Witness&lt;/strong&gt;&lt;/a&gt; embraced the use of large language models (LLMs) in Azure OpenAI to build its innovative AI Agent application, Orbital Copilot, which can save legal teams 70 percent of the time it takes to conduct property diligence work.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837624667267994535-parloa-azure-openai-service-professional-services-en-germany\"&gt;Parloa&lt;/a&gt;&lt;/strong&gt; took a “voice-first” approach and created an enterprise-grade AI Agent Management platform to automate customer interactions across phone, chat and messaging apps.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835402038421112318-zurich-azure-openai-service-insurance-en-switzerland\"&gt;&lt;strong&gt;Zurich Insurance Group&lt;/strong&gt;&lt;/a&gt; used Azure OpenAI Service to develop advanced AI applications that led to more accurate and efficient risk assessment evaluations, accelerating the underwriting process, reducing turnaround times and increasing customer satisfaction.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;&lt;ol start=\"71\"&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1783172439597920946-absa-github-copilot-banking-and-capital-markets-en-south-africa\"&gt;&lt;strong&gt;Absa&lt;/strong&gt;&lt;/a&gt; has adopted Microsoft Copilot to streamline various business processes, saving several hours on administrative tasks each day.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1754582924902623921-adobe-inc-azure-retailers-en-united-states%20\"&gt;&lt;strong&gt;Adobe&lt;/strong&gt;&lt;/a&gt; leverages Microsoft Azure to streamline the customer experience, harnessing the power of the connected cloud services and creating a synergy that drives AI transformation across industries.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1828343452663470824-acentra-azure-openai-service-health-provider-en-united-states\"&gt;&lt;strong&gt;Acentra Health&lt;/strong&gt;&lt;/a&gt; developed Medscribe, a web application that uses Azure OpenAI Service to generate draft letters in a secure, HIPPA-compliant enclave that responds to customer appeals for healthcare services within 24 hours, reducing the time spent on each appeal letter by 50%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/how-alaska-airlines-uses-technology-to-ensure-its-passengers-have-a-seamless-journey-from-ticket-purchase-to-baggage-pickup\"&gt;&lt;strong&gt;Alaska Airlines&lt;/strong&gt;&lt;/a&gt; is using Microsoft Azure, Microsoft Defender and GitHub to ensure its passengers have a seamless journey from ticket purchase to baggage pickup, and it has started leveraging Azure OpenAI Service to unlock more business value for its customer care and contact centers.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1715820133841482699-ally-azure-banking-en-united-states\"&gt;&lt;strong&gt;Ally Financial&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to reduce manual tasks for its customer service associates, freeing up time for them to engage with customers.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1818713195387957010-bmwgroup-azure-automotive-en-germany\"&gt;&lt;strong&gt;BMW Group&lt;/strong&gt;&lt;/a&gt; optimizes the customer experience, connecting 13 million active users to their vehicles with the MyBMW app on Azure, which supports 450 million daily requests and 3.2TB of data processing.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1777364400660400778-boyner-azure-retailers-en-turkiye\"&gt;&lt;strong&gt;Boyner&lt;/strong&gt;&lt;/a&gt; has tripled its e-commerce performance using Microsoft Azure, seeing a rise in customer satisfaction, engagement, conversion rate and revenue.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1825988149746373274-bradesco-azure-ai-services-banking-and-capital-markets-en-brazil\"&gt;&lt;strong&gt;Bradesco Bank&lt;/strong&gt;&lt;/a&gt; integrated Microsoft Azure into its virtual assistant, BIA, resulting in reduced response time from days to hours, improving operational efficiency and client satisfaction.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/10/08/how-mexico-is-pioneering-ai-innovation-for-a-global-future/\"&gt;&lt;strong&gt;Capgemini Mexico&lt;/strong&gt;&lt;/a&gt; integrated GitHub Copilot to support scalable AI implementations, which has led to improved customer experiences and increased efficiency.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1825642148546862376-capitec-bank-power-bi-banking-and-capital-markets-en-south-africa\"&gt;&lt;strong&gt;Capitec Bank&lt;/strong&gt;&lt;/a&gt; uses Azure OpenAI Service and Microsoft 365 Copilot, enabling their AI-powered chatbot to assist customer service consultants in accessing product information more efficiently, saving significant time for employees each week.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1785788806559352474-cdiscount-azure-openai-service-retailers-en-france&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062287719%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=5Az4mvdBtdEDcPhTrwrTpuHXA00mk%2B4RJbd8RwMUqFE%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Cdiscount&lt;/strong&gt;&lt;/a&gt; is leveraging GitHub Copilot and Azure OpenAI Service to enhance developer efficiency, optimize product sheet categorization and improve customer satisfaction.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/10/08/how-mexico-is-pioneering-ai-innovation-for-a-global-future/\"&gt;&lt;strong&gt;Cemex&lt;/strong&gt;&lt;/a&gt; used Azure OpenAI Service to launch Technical Xpert, an AI tool used by sales agents to provide instant access to comprehensive product and customer solution information, significantly reducing search time by 80%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1771914030592960432-chanel-azure-data-factory-retailers-en-france\"&gt;&lt;strong&gt;Chanel&lt;/strong&gt;&lt;/a&gt; elevated their client experience and improved employee efficiency by leveraging Microsoft Fabric and Azure OpenAI Service for real-time translations and quality monitoring.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1817161013472137094-burlington-microsoft-copilot-studio-national-government-en-canada&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C7b04ac48f784445af5a008dcf2237a96%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638651481396472142%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=Yj%2BSmlttzjVG6ZaYuMR0JRnPHaHRiyZNLPRfZySVNCo%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;City of Burlington&lt;/strong&gt;&lt;/a&gt; created two AI-powered solutions: MyFiles system using Microsoft Power Platform for building permits and CoBy, a 24/7 customer support assistant using Microsoft Copilot Studio.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1831036907720807463-esmadrid-azure-openai-service-national-government-en-spain\"&gt;&lt;strong&gt;City of Madrid&lt;/strong&gt;&lt;/a&gt; created an AI virtual assistant with Microsoft Azure OpenAI Service, offering tourists accurate, real-time information and personalized responses in 95-plus languages.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1719466218077596326-cognizant-azureai-software-en-india\"&gt;&lt;strong&gt;Cognizant&lt;/strong&gt;&lt;/a&gt; is making performance management more effective and meaningful with Microsoft Azure Machine Learning to help clients across industries envision, build and run innovative digital enterprises.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1769790334604179311-coles-group-azure-machine-learning-retailers-en-australia\"&gt;&lt;strong&gt;Coles Group&lt;/strong&gt;&lt;/a&gt; has leveraged Microsoft Azure to enhance its digital presence and improve customer engagement, rolling out new applications to its stores six times faster without disrupting workloads.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1794733067648840156-commercial-bank-of-dubai-azure-banking-and-capital-markets-en-united-arab-emirates\"&gt;&lt;strong&gt;Commercial Bank of Dubai&lt;/strong&gt;&lt;/a&gt; used Microsoft Azure to upgrade its application infrastructure, improving transaction security and speed so individual customers can now open an account and start banking in about two minutes.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1803548215767581643-dewa-azure-ai-services-government-en-united-arab-emirates\"&gt;&lt;strong&gt;Dubai Electricity and Water Authority&lt;/strong&gt;&lt;/a&gt; has significantly improved productivity and customer satisfaction by integrating multiple Microsoft AI solutions, reducing task completion time from days to hours and achieving a 98% customer happiness rate.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1824718946474231481-elcome-microsoft-365-copilot-consumer-goods-en-united-arab-emirates\"&gt;&lt;strong&gt;Elcome&lt;/strong&gt;&lt;/a&gt; uses Microsoft 365 Copilot to improve the customer experience, reducing response times from 24 hours to eight hours.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817720705929928929-elunic-azure-openai-service-other-en-germany\"&gt;&lt;strong&gt;elunic&lt;/strong&gt;&lt;/a&gt; developed shopfloor.GPT based on Azure OpenAI, leading to increased productivity for customers and saving 15 minutes per request.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/2024/04/26/the-estee-lauder-companies-and-microsoft-increase-collaboration-to-power-prestige-beauty-with-generative-ai/\"&gt;&lt;strong&gt;Estée Lauder Companies&lt;/strong&gt;&lt;/a&gt; is leveraging Azure OpenAI Service to create closer consumer connections and increase speed to market with local relevancy.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1761931588230983875-first-national-bank-dynamics-365-sales-banking-and-capital-markets-en-south-africa\"&gt;&lt;strong&gt;First National Bank&lt;/strong&gt;&lt;/a&gt; is using Microsoft Copilot for Sales to help bankers create professional, thoughtful emails in 13 native South African languages, to enhance customer interactions, streamline communications and reinforce its commitment to innovation and customer service.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1823101967024425351-florafoodgroup-azure-synapse-analytics-consumer-goods-en-netherlands\"&gt;&lt;strong&gt;Flora Food Group&lt;/strong&gt;&lt;/a&gt; migrated to Microsoft Fabric to offer more detailed and timely insights to its customers, enhancing service delivery and customer satisfaction.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1741559204804365124-groupama-azure-openai-service-banking-en-france\"&gt;&lt;strong&gt;Groupama&lt;/strong&gt;&lt;/a&gt; deployed a virtual assistant using Azure OpenAI Service that delivers reliable, verified and verifiable information, and boasts an 80% success rate.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1782343682836979145-iu-internationale-hochschule-gmbh-azure-openai-service-higher-education-en-germany\"&gt;&lt;strong&gt;International University of Applied Sciences (IU)&lt;/strong&gt;&lt;/a&gt; adopted Azure OpenAI Service to revolutionize learning with a personalized study assistant that can interact with each student just like a human would.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1777785808385732889-investec-microsoft-teams-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;Investec&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot for Sales to enhance the bank’s client relationships, estimating saving approximately 200 hours annually, ultimately boosting sales productivity and delivering a personalized, seamless customer experience.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/linum-unlocking-visual-storytelling-with-ai/\"&gt;&lt;strong&gt;Linum&lt;/strong&gt;&lt;/a&gt; is using Microsoft Azure to train their text-to-video models faster and more efficiently without losing performance or wasting resources.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1771760434465986810-lumen-microsoft-copilot-telecommunications-en-united-states\"&gt;&lt;strong&gt;Lumen Technologies&lt;/strong&gt;&lt;/a&gt; is redefining customer success and sales processes through the strategic use of Microsoft 365 Copilot, enhancing productivity, sales, and customer service in the global communications sector.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://blogs.microsoft.com/blog/2024/10/21/new-autonomous-agents-scale-your-team-like-never-before/\"&gt;&lt;strong&gt;McKinsey &amp;amp; Company&lt;/strong&gt;&lt;/a&gt;is creating an agent to reduce the client onboarding process by reducing lead time by 90% and administrative work by 30%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1747191591416935394-meesho-azure-retail-en-india\"&gt;&lt;strong&gt;Meesho&lt;/strong&gt;&lt;/a&gt; leveraged Microsoft’s Azure OpenAI Service and GitHub Copilot to enhance customer service and software development, resulting in a 25% increase in customer satisfaction scores and 40% more traffic on customer service queries.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1794371049083171324-milpark-education-dynamics-365-customer-service-higher-education-en-south-africa\"&gt;&lt;strong&gt;Milpark Education&lt;/strong&gt;&lt;/a&gt; integrated Microsoft Copilot and Copilot Studio and in just four months, improved efficiency and accuracy of student support, decreasing the average resolution time by 50% and escalations by more than 30%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749530601364196664-nc-fusion-microsoft-dataverse-nonprofit-en-united-states\"&gt;&lt;strong&gt;NC Fusion&lt;/strong&gt;&lt;/a&gt; chose a comprehensive Microsoft solution to make marketing engagement activities easier and accurately target the best audience segments.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/11/07/german-ingenuity-meets-the-power-of-ai-to-shape-the-future-of-industries/\"&gt;&lt;strong&gt;Medgate,&lt;/strong&gt; a telehealth subsidiary of Otto Group&lt;/a&gt; developed a medical Copilot powered by Azure OpenAI which summarizes consultations, supports triage and provides real-time translations.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1709539049606899869-pacific-gas-and-electric-microsoft-power-apps-energy-usa\"&gt;&lt;strong&gt;Pacific Gas &amp;amp; Electric&lt;/strong&gt;&lt;/a&gt; built a chatbot using Microsoft Copilot Studio that saves $1.1 million annually on helpdesk support.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/pockyt-doubles-developer-productivity-metrics-using-github-copilot/\"&gt;&lt;strong&gt;Pockyt&lt;/strong&gt;&lt;/a&gt; is using GitHub Copilot and anticipates a 500% increase in productivity in the medium to long term as they continue adapting AI and fine-tuning their software development life cycle.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1751701319789621671-south-australia-department-of-education-azure-ai-content-safety-higher-education-en-australia&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C7b04ac48f784445af5a008dcf2237a96%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638651481396525386%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=CVC3B6Ge8NsiHrasxfQFezPbd3Br57rdTve%2FysbzvAE%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;South Australia Department for Education&lt;/strong&gt;&lt;/a&gt; launched an AI-powered educational chatbot to help safeguard students from harmful content while introducing responsible AI to the classrooms.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/empowering-sync-labs-ai-driven-video-editing-revolution-how-microsoft-for-startups-and-azure-gpu-clusters-accelerate-innovation/\"&gt;&lt;strong&gt;Sync Labs&lt;/strong&gt;&lt;/a&gt; is using Microsoft Azure to create AI-driven solutions that have led to a remarkable 30x increase in revenue and a 100x expansion of their customer base.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812266855486401339-syndigo-azure-professional-services-en-united-states\"&gt;&lt;strong&gt;Syndigo&lt;/strong&gt;&lt;/a&gt; is using Azure to accelerate digital commerce for its customers by more than 40% and expand its customer base.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1739790055278570755-telkomsel-azure-openai-service-telecommunications-en-indonesia\"&gt;&lt;strong&gt;Telkomsel&lt;/strong&gt;&lt;/a&gt; created a virtual assistant with Azure OpenAI Service, resulting in a leap in customer self-service interactions from 19% to 45%, and call volume dropped from 8,000 calls to 1,000 calls a day.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/torrens-university-leverages-generative-ai-to-uplift-its-online-learning-experience-saving-20000-hours-and-2-4-million-in-time-and-resources/\"&gt;&lt;strong&gt;Torrens University&lt;/strong&gt;&lt;/a&gt; chose to use Azure OpenAI to uplift its online learning experience, saving 20,000 hours and $2.4 million in time and resources.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1751482919190212988-trustingsocial-azure-banking-and-capital-markets-en-vietnam\"&gt;&lt;strong&gt;Trusting Social&lt;/strong&gt;&lt;/a&gt; integrated Microsoft Azure services to launch AI-driven agents that are changing how banks function and transforming their customer’s banking experience.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/education/blog/2024/09/uc-berkeley-enhances-computer-science-education-with-azure-openai-service/\"&gt;&lt;strong&gt;University of California, Berkeley&lt;/strong&gt;&lt;/a&gt; used Azure OpenAI Service to deploy a custom AI chatbot that supports student learning and helps students with complex coursework.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785425602161769458-university-of-sydney-azure-openai-service-higher-education-en-united-states\"&gt;&lt;strong&gt;University of Sydney&lt;/strong&gt;&lt;/a&gt; created a self-serve AI platform powered by Azure OpenAI Service, to enable faculty to build custom chatbots for enhancing student onboarding, feedback, career simulation and more.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1762214991743764118-van-lanschot-kempen-copilot-for-microsoft-365-banking-and-capital-markets-en-netherlands\"&gt;&lt;strong&gt;Van Lanschot Kempen&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot to reduce the time needed for daily tasks, freeing up time to invest in that crucial personal connection.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1795836141096013038-virgin-money-dynamics-365-customer-service-banking-and-capital-markets-en-united-kingdom&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062247231%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=deIb30Bj2H6w0JPf5Xa8Mj5GWdCDALuX3VBRLg0NVaA%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Virgin Money&lt;/strong&gt;&lt;/a&gt; built an award-winning virtual assistant using Copilot Studio to help build customers’ confidence in their digital products and services.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1725778377710136622-vocalls-azure-telecommunications-en-czechia\"&gt;&lt;strong&gt;VOCALLS&lt;/strong&gt;&lt;/a&gt; automates over 50 million interactions per year, resulting in a 78% reduction in average handling time aside from a 120% increase in answered calls.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1770174778560829849-vodafone-group-azure-telecommunications-en-united-kingdom\"&gt;&lt;strong&gt;Vodafone Group&lt;/strong&gt;&lt;/a&gt; is leveraging Microsoft&amp;#8217;s AI solutions, including Azure AI Studio, OpenAI Service, Copilot and AI Search, to achieve a 70% resolution rate for customer inquiries through digital channels and reduce call times by at least one minute.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://blogs.microsoft.com/blog/2024/01/09/walmart-unveils-new-generative-ai-powered-capabilities-for-shoppers-and-associates/\"&gt;&lt;strong&gt;Walmart&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to deliver a helpful and intuitive browsing experience for customers designed to serve up a curated list of the personalized items a shopper is looking for.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/weights-and-biases-streamlining-machine-learning-ai-experimentation/\"&gt;&lt;strong&gt;Weights &amp;amp; Biases&lt;/strong&gt;&lt;/a&gt; created a platform which runs on Microsoft Azure that allows developers to keep records, log successes and failures and automate manual tasks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785340736965832631-w2m-azure-ai-speech-travel-and-transportation-en-spain\"&gt;&lt;strong&gt;World2Meet&lt;/strong&gt;&lt;/a&gt; is providing better customer service and operations with a new virtual assistant powered by Microsoft Azure.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1805346719014513003-xavier-college-dynamics-365-customer-insights-higher-education-en-australia\"&gt;&lt;strong&gt;Xavier College&lt;/strong&gt;&lt;/a&gt; is modernizing its student information systems on Microsoft Dynamics 365 and Microsoft Azure to unlock powerful insights, fostering innovation and data-driven decision making.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1752754742242485191-zavarovalnica-triglav-azure-openai-service-insurance-en-slovenia\"&gt;&lt;strong&gt;Zavarovalnica Triglav&lt;/strong&gt;&lt;/a&gt; implemented Microsoft Dynamics 365 and Azure OpenAI Service to streamline its operations with automated responses and smart rerouting of customer enquiries.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;&lt;strong&gt;Reshaping business process&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Transforming operations is another way generative AI is encouraging innovation and improving efficiency across various business functions. In marketing, it can create personalized content to truly engage different audiences. For supply chain management, it can predict market trends so companies can optimize their inventory levels. Human resources departments can speed up the hiring process, while financial services can use it for fraud detection and risk assessments. With generative AI, companies are not just refining their current processes, they’re also discovering exciting new growth opportunities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Stories:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1836288328937535074-abb-azure-openai-service-discrete-manufacturing-en-switzerland\"&gt;&lt;em&gt;&lt;strong&gt;ABB Group&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; integrated Azure OpenAI Service into their Genix Copilot platform enabling customers to achieve up to 30% savings in operations and maintenance, 20% improvement in energy and emission optimization and an 80% reduction in service calls.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837649623806233713-dentsu-azure-kubernetes-service-telecommunications-en-united-kingdom\"&gt;Dentsu&lt;/a&gt; &lt;/strong&gt;implemented Microsoft Azure AI Foundry and Azure OpenAI Service to build a predictive analytics copilot that supports media insights, cutting analysis time by 80% and overall time to insight by 90%, reducing analysis costs.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837593617349762065-dow-microsoft-365-copilot-chemicals-and-agrochemicals-en-united-states\"&gt;&lt;strong&gt;Dow&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot to empower teams with AI-driven insights and streamline essential workflows by automating tasks across departments, saving millions of dollars on shipping operations in the first year.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837788400819593167-lenovo-dynamics-365-customer-service-discrete-manufacturing-en-united-states\"&gt;Lenovo&lt;/a&gt;&lt;/strong&gt; leveraged Dynamics 365 Customer Service to rapidly manage customer inquiries by streamlining repetitive tasks, boosted agent productivity by 15%, reduced handling time by 20% and reached record-high customer satisfaction.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835242622798889710-operationsmile-azure-openai-service-nonprofit-en-united-states\"&gt;Operation Smile&lt;/a&gt;&lt;/strong&gt; used Azure OpenAI Service, Fabric and Power Apps to eliminate manual data entry, resulting in reduced translation errors by about 90% and the time required for completing reports from four to five hours to just 15 to 20 minutes.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835335026854319278-starkist-machine-learning-services-ai-other-en-united-states\"&gt;StarKist Foods&lt;/a&gt;&lt;/strong&gt; used Azure to effectively unite production and demand processes with finance, reducing the planning cycle from 16 hours to less than one.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;&lt;ol start=\"124\"&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1813700096910640854-accelleron-microsoft-dataverse-discrete-manufacturing-en-switzerland\"&gt;&lt;strong&gt;Accelleron&lt;/strong&gt;&lt;/a&gt; used Microsoft Power Platform to support numerous business applications and simplify processes for service agents and employees, resulting in the onboard of new agents in 30 minutes, compared to two days for other solutions.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-us%2Fstory%2F1786976982328092426-accenture-azure-professional-services-en-united-states&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062388457%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=tzjmFN28KGEhkewWI0nSw77m4hMiolsJkVCHmWMIzYc%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Accenture &lt;/strong&gt;&lt;/a&gt;developed an AI-powered financial advisor that leverages RISE with SAP on Microsoft Azure to enhance their infrastructure and integrate financial data.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/reimagining-employee-services-how-atomicwork-is-transforming-the-digital-workplace-with-ai-automation/\"&gt;&lt;strong&gt;Atomicwork&lt;/strong&gt;&lt;/a&gt; leverages Azure OpenAI to bring together three power capabilities: a conversational assistant, a modern service management system and a workflow automation platform.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/ai-startup-showcase-blink-the-worlds-first-security-automation-copilot/\"&gt;&lt;strong&gt;Blink Ops&lt;/strong&gt;&lt;/a&gt; fully embraced generative AI to build the world’s first Security Automation Copilot with more than 8,000 automated workflows to help any Security/IT task through prompts.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792657160796124295-chalhoubgroup-microsoft-fabric-retailers-en-united-arab-emirates\"&gt; Chalhoub Group&lt;/a&gt;&lt;/strong&gt; is using Microsoft Fabric to modernize its data analytics and streamline its data sources into one platform, increasing agility, enhancing analytics and accelerating processes.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1751257654493783966-cineplex-telecommunications-power-automate-en-canada\"&gt;&lt;strong&gt;Cineplex&lt;/strong&gt;&lt;/a&gt; is developing innovative automation solutions for finance, guest services, and other departments, saving the company over 30,000 hours a year in manual processing time.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790114264617229624-clearbank-azure-api-management-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;ClearBank&lt;/strong&gt;&lt;/a&gt; moved its services to Microsoft Azure to gain scalability and efficiency, pushing out 183% more monthly system releases, gaining both scalability and efficiency.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817798972170302828-dsb-microsoft-365-copilot-travel-and-transportation-en-denmark\"&gt;&lt;strong&gt;Danske Statsbaner&lt;/strong&gt;&lt;/a&gt; increases productivity up to 30% with help from Microsoft AI solutions.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1802842951607118817-eastman-microsoft-defender-other-en-united-states&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062346047%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=19bsxM%2B7dKeZu1uRzpaiKi9HNKicedDJKa7WcLcYWyc%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Eastman&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;implemented Microsoft Copilot for Security, realizing the benefits of accelerated upskilling, step-by-step guidance for response and faster threat remediation.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1816233578469159840-fast-shop-azure-analysis-services-retailers-en-brazil\"&gt;&lt;strong&gt;Fast Shop&lt;/strong&gt;&lt;/a&gt; migrated to Microsoft Azure, creating a self-service culture of access to data, eliminating delays, reducing costs and increasing leadership satisfaction with data while providing more agility in reporting.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804528563383903958-florida-crystals-corporation-microsoft-teams-phone-manufacturing-en-united-states\"&gt;&lt;strong&gt;Florida Crystals&lt;/strong&gt;&lt;/a&gt; adopted a value-added solution across Microsoft products including Microsoft 365 Copilot to reduce telecom expenses and automate industrial process controls.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/ghds-productivity-surge-how-ai-is-reinventing-the-rfp-process-in-construction-and-engineering/\"&gt;&lt;strong&gt;GHD&lt;/strong&gt;&lt;/a&gt; is reinventing the RFP process in construction and engineering with Microsoft 365 Copilot.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/govdash-modernizing-government-contract-workflows-ai/\"&gt;&lt;strong&gt;GovDash&lt;/strong&gt;&lt;/a&gt; is a SaaS platform that leverages artificial intelligence to streamline the entire business development lifecycle for government contracting companies using Azure OpenAI.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/10/08/how-mexico-is-pioneering-ai-innovation-for-a-global-future/\"&gt;&lt;strong&gt;Grupo Bimbo&lt;/strong&gt;&lt;/a&gt; is deploying Microsoft’s industrial AI technologies to modernize its manufacturing processes, optimizing production and reducing downtime, driving significant cost savings and empowering global innovation.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1797709165933196148-insight-canada-microsoft-copilot-for-microsoft-365-other-en-united-states&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062331899%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=HW4BiT8dbPAYPw6sIVDBKNXA5Fz%2FFbUe77EhqBE6x%2B0%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Insight Canada&lt;/strong&gt;&lt;/a&gt; implemented Microsoft 365 Copilot to streamline business operations, realizing a 93% productivity gains in functions including sales, finance and human resources.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-us%2Fstory%2F1814561247353333768-intesa-sanpaolo-group-microsoft-copilot-for-security-banking-and-capital-markets-en-italy&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C7b04ac48f784445af5a008dcf2237a96%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638651481396544584%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=2CrT3SWjjdWsgD4F01XZOvF7d9RsnLLtAh7%2BrOtCKhQ%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Intesa Sanpaolo Group&lt;/strong&gt;&lt;/a&gt; enhanced its cybersecurity with AI-enabled Microsoft Sentinel and Microsoft Copilot for Security, resulting in faster threat detection, increased productivity and reduced storage costs.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1816212812226771892-kaya-power-bi-professional-services-en-india\"&gt;&lt;strong&gt;Kaya&lt;/strong&gt;&lt;/a&gt; deployed a custom implementation of Microsoft Dynamics 365 and Power BI to modernize its supply chain, leading to enhanced visibility, improved planning and streamlined inter-department operations.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792260322207475324-lionbridge-technologies-azure-openai-service-other-en-united-states\"&gt;&lt;strong&gt;Lionbridge Technologies, LLC&lt;/strong&gt;&lt;/a&gt; is using Microsoft Azure and Azure OpenAI Service to accelerate its delivery times and improve quality, reducing project turnaround times by up to 30%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1829828630587553613-ltimindtree-microsoft-sentinel-professional-services-en-india\"&gt;&lt;strong&gt;LTIMindtree&lt;/strong&gt;&lt;/a&gt; integrated Microsoft Copilot for Security, offering automated incident response, integrated threat intelligence and advanced threat analysis.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1826019653953914614-maniadechurrasco-azure-synapse-analytics-retailers-en-brazil\"&gt;&lt;strong&gt;Mania de Churrasco&lt;/strong&gt;&lt;/a&gt; used Microsoft Azure, Power Platform and Microsoft 365 to achieve high efficiency, security and scalability in its operations, in addition to improving its data intelligence, which indirectly participated in a 20% increase in sales year on year.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1774373123930343901-nbg-azure-banking-and-capital-markets-en-greece\"&gt;&lt;strong&gt;National Bank of Greece&lt;/strong&gt;&lt;/a&gt; built an Azure-powered Document AI solution to transform its document processing, improving the bank’s accuracy to 90%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1782799284354734628-nestbank-azure-databricks-ai-banking-and-capital-markets-en-poland\"&gt;&lt;strong&gt;Nest Bank&lt;/strong&gt;&lt;/a&gt; has revolutionized its operations by integrating Microsoft 365 Copilot and Azure OpenAI Service, resulting in doubled sales and increased daily transactions from 60,000 to 80,000, showcasing the transformative impact of generative AI in the financial sector.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1796987311720019561-network-rail-azure-databricks-travel-and-transportation-en-united-kingdom\"&gt;&lt;strong&gt;Network Rail&lt;/strong&gt;&lt;/a&gt; modernized their data analytics solution with Microsoft Azure, helping engineers understand data 50% faster than before and improve efficiency, passenger experiences and safety — all while saving costs.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-us%2Fstory%2F1728829430186194098-nsure-power-platform-insurance-usa&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C234b8aac34a541c47cb308dcde7136e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638629825062401853%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=x4UnaYEtWxrcdctWNTgo7s1KfrW3%2FKgnDpcu9HzDUDU%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Nsure&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;developed an AI-powered agent that uses Copilot Studio and Power Automate to reduce manual processing time by 60% while also reducing associated costs by 50%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcustomers.microsoft.com%2Fen-gb%2Fstory%2F1800238731998879113-oncoclinicas-azure-ai-services-health-provider-en-brazil&amp;amp;data=05%7C02%7Ccarissa.eicholz%40microsoft.com%7C7b04ac48f784445af5a008dcf2237a96%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638651481396562112%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;amp;sdata=UpeTgP06Rf%2BOBs3c%2Frxl2dJPlzEp7v96vPA1xIFrAFo%3D&amp;amp;reserved=0\"&gt;&lt;strong&gt;Oncoclínicas&lt;/strong&gt;&lt;/a&gt; implemented Microsoft Azure to transform its entire data ecosystem with a web portal and mobile application that performs all image processing and storage.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1761512190744606726-pacifico-microsoft-365-insurance-en-peru\"&gt;&lt;strong&gt;Pacifico Seguros&lt;/strong&gt;&lt;/a&gt; has adopted Microsoft Copilot for Security to optimize its security operations and anticipate and neutralize threats more efficiently and effectively.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1799912172105528685-parexel-azure-data-lake-analytics-health-provider-en-united-states\"&gt;&lt;strong&gt;Parexel&lt;/strong&gt;&lt;/a&gt; adopted Azure Databricks and Microsoft Power BI, achieving an 85% reduction in data engineering tooling costs, a 30% increase in staff efficiency and a 70% reduction in time to market for data product delivery.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1781698642929941032-paysafe-microsoft-copilot-for-microsoft-365-banking-and-capital-markets-en-bulgaria\"&gt;&lt;strong&gt;Paysafe&lt;/strong&gt;&lt;/a&gt; used Microsoft 365 Copilot to streamline meetings, information management, and document creation, addressing language barriers, eliminating time-consuming tasks, and boosting creativity along the way.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1797319592906573606-planted-foods-ag-dynamics-365-business-central-other-en-switzerland\"&gt;&lt;strong&gt;Planted&lt;/strong&gt;&lt;/a&gt; is integrating Azure OpenAI to manage everyday tasks more efficiently and facilitate the search for information for innovative process development.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1828672699218736809-presidio-azure-openai-service-other-en-united-states\"&gt;&lt;strong&gt;Presidio&lt;/strong&gt;&lt;/a&gt; realized dramatic productivity gains saving 1,200 hours per month on average for the employees using Microsoft 365 Copilot and created 70 new business opportunities.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1825206333142790059-qatar-charity-azure-ai-services-nonprofit-en-qatar\"&gt;&lt;strong&gt;Qatar Charity&lt;/strong&gt;&lt;/a&gt; used Copilot Studio to increase its call center efficiency, reducing average handle time by 30%, increasing customer satisfaction by 25% and achieving a 40% reduction in IT maintenance costs.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1747047183590598802-saphyre-azure-banking-and-capital-markets-en-united-states\"&gt;&lt;strong&gt;Saphyre&lt;/strong&gt;&lt;/a&gt; uses Microsoft Azure and AI to provide an intelligent cloud-based solution that automates and streamlines financial trading workflows around client and counterparty life cycle management, reducing manual efforts by 75%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1799824484108434730-swiss-azure-travel-and-transportation-en-switzerland\"&gt;&lt;strong&gt;Swiss International Air Lines&lt;/strong&gt;&lt;/a&gt; migrated and modernized with Microsoft Azure, achieving up to 30% cost savings, a remarkable boost in platform stability along with enhanced security visibility.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1703082544077596378-zeiss-group-microsoft-fabric-germany\"&gt;&lt;strong&gt;ZEISS Group&lt;/strong&gt;&lt;/a&gt; uses Microsoft Fabric to create a secure and trusted data supply chain that can be shared effortlessly across a range of business units.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1815861561509835507-zf-power-apps-automotive-en-germany\"&gt;&lt;strong&gt;ZF Group&lt;/strong&gt;&lt;/a&gt; builds manufacturing efficiency with over 25,000 apps and 37,000 unique active users on Power Platform.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;&lt;strong&gt;Bending the curve on innovation&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Generative AI is revolutionizing innovation by speeding up creative processes and product development. It&amp;#8217;s helping companies come up with new ideas, design prototypes, and iterate quickly, cutting down the time it takes to get to market. In the automotive industry, it&amp;#8217;s designing more efficient vehicles, while in pharmaceuticals, it&amp;#8217;s crafting new drug molecules, slashing years off R&amp;amp;D times. In education, it transforms how students learn and achieve their goals. Here are more examples of how companies are embracing generative AI to shape the future of innovation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;New Stories:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1836503929316061467-bmw-azure-app-service-automotive-en-germany\"&gt;BMW AG&lt;/a&gt;&lt;/strong&gt; implemented Azure AI to develop a mobile data recorder copilot for faster data management, helping engineers reduce the lead time for insights from days to hours or sometimes minutes.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1836366161136561849-ey-azure-ai-studio-professional-services-en-united-states\"&gt;EY&lt;/a&gt; &lt;/strong&gt;worked with Microsoft to make Azure AI Foundry more inclusive for all, serving the 20% of the global workforce identifying as neurodivergent.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://unlocked.microsoft.com/vatican/\"&gt;Iconem&lt;/a&gt; &lt;/strong&gt;leveraged AI-generated imagery to process and analyze a vast amount of photogrammetry data used to create the 3D digital twin of St. Peter’s Basilica, allowing visitors to explore every intricate detail from anywhere in the world.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1837647984192425990-mckesson-azure-openai-service-health-provider-en-united-states\"&gt;Ontada&lt;/a&gt;&lt;/strong&gt; implemented Azure AI and Azure OpenAI Service to target nearly 100 critical oncology data elements across 39 cancer types and now accesses an estimated 70% of previously unanalyzed or unused information, accelerating its life science product development, speeding up time to market from months to just one week.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol start=\"5\"&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1835031712819389839-mia-labs-microsoft-defender-for-cloud-automotive-en-united-states\"&gt;Mia Labs&lt;/a&gt;&lt;/strong&gt; implemented Azure OpenAI to produce and protect its conversational AI virtual assistant Mia that provides fast support from investors, along with the sophisticated security posture and threat protection capabilities for AI workloads.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://www.youtube.com/watch?v=y8jkj2rT8jo\"&gt;&lt;strong&gt;New Sun Road&lt;/strong&gt;&lt;/a&gt; implemented AI into a local controller for energy systems to balance the supply, storage and use requirements. This optimized loads to accelerate the deployment of renewable energy for local clean power for communities.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://www.youtube.com/watch?v=y8jkj2rT8jo\"&gt;SustainCERT&lt;/a&gt;&lt;/strong&gt; deployed GenAI and machine learning for automated data verification, extraction from documents and to accelerate auditing processes to enable verifying the impacts and credibility of carbon credits.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=\"https://news.microsoft.com/source/asia/features/toyota-is-deploying-ai-agents-to-harness-the-collective-wisdom-of-engineers-and-innovate-faster/\"&gt;Toyota&lt;/a&gt; &lt;/strong&gt;is deploying AI agents to harness the collective wisdom of engineers and innovate faster in a system named “O-Beya,” or “big room” in Japanese. The “O-Beya” system currently has nine AI agents — from a Vibration Agent to a Fuel Consumption Agent.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href=\"https://www.youtube.com/watch?v=y8jkj2rT8jo\"&gt;&lt;strong&gt;Utilidata&lt;/strong&gt;&lt;/a&gt; built the first distributive AI and accelerated computing platform for the electric grid allowing flexible transformation and dynamic infrastructure to increase electrification and decarbonization.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;&lt;ol start=\"159\"&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1750059518785857549-airindia-microsoft-teams-travel-and-transportation-en-india\"&gt;&lt;strong&gt;Air India&lt;/strong&gt;&lt;/a&gt; has incorporated Microsoft 365 Copilot into multiple departments, unlocking a new realm of operational insights that not only provide critical data on flight punctuality and operational hurdles but also empower proactive, collaborative decision making.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814827447818396950-agnostic-intelligence-azure-marketplace-other-en-switzerland\"&gt;&lt;strong&gt;Agnostic Intelligence&lt;/strong&gt;&lt;/a&gt;deployed Azure OpenAI Service to eliminate time-consuming tasks, saving users up to 80% of their time and enabling IT managers to focus on innovation and quality assurance.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1739352737304784739-albertheijn-azure-open-ai-service-retailers-en-netherlands\"&gt;&lt;strong&gt;Albert Heijn&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI for everything from customer personalization to demand forecast and food waste projects, making it easier for its customers to change their lifestyle.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1770157430043720426-amgen-inc-microsoft-copilot-for-microsoft-365-health-provider-en-united-states\"&gt;&lt;strong&gt;Amgen&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot to boost productivity and has the potential to speed up drug development and support advancements in their business processes.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/10/08/how-mexico-is-pioneering-ai-innovation-for-a-global-future/\"&gt;&lt;strong&gt;APEC&lt;/strong&gt;&lt;/a&gt; leverages Microsoft Azure and deep neural network algorithms to develop an app that enables healthcare providers to capture retinal images, increasing the accuracy to identify Retinopathy of Prematurity (RoP) to 90%.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1731404546482708710-asos-retailer-azure-ai-studio\"&gt;&lt;strong&gt;ASOS&lt;/strong&gt;&lt;/a&gt; is using Azure AI Studio to help customers discover new looks with genuine shopping insights, personalized conversations, naturalism and even humor to enliven the shopping journey.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792296600814885165-auburn-microsoft-sentinel-higher-education-en-united-states\"&gt;&lt;strong&gt;Auburn University&lt;/strong&gt;&lt;/a&gt; is incorporating Microsoft Copilot to promote AI literacy, accessibility, and collaboration, with the aim to expand educational and economic opportunities for its entire academic community with AI-centric tools.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/latam/features/ai/brazil-b3-investment-copilot/?lang=en\"&gt;&lt;strong&gt;B3&lt;/strong&gt;&lt;/a&gt; launched an AI assistant using Azure OpenAI Service that aids 10,000 users a day to answer Brazilians’ questions about how to start investing.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/from-bioscience-to-skin-care-startups-are-harnessing-ai-to-solve-problems-big-and-small/\"&gt;&lt;strong&gt;Basecamp Research&lt;/strong&gt;&lt;/a&gt; aims to build the world’s largest database of national biodiversity and apply AI and machine learning to advance bioscience.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1703594261178267318-bayer-microsoft-copilot-germany\"&gt;&lt;strong&gt;Bayer&lt;/strong&gt;&lt;/a&gt; is using Microsoft Copilot to contribute to feeding a growing global population and helping people lead healthier, disease-free lives.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/it-it/2024/10/23/microsoft-ceo-satya-nadella-showcases-transformative-power-of-artificial-intelligence-for-italys-growth-at-microsoft-ai-tour-in-rome/?msockid=1033af7595936fd71c19bd9c94546e18\"&gt;&lt;strong&gt;Brembo&lt;/strong&gt;&lt;/a&gt; leveraged Azure OpenAI to develop ALCHEMIX, a solution to generate innovative compounds for its brake pads, drastically reducing the development time of new compounds from days to mere minutes.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1771607059660027073-canary-speech-azure-ai-services-health-provider-en-united-states\"&gt;&lt;strong&gt;Canary Speech&lt;/strong&gt;&lt;/a&gt; can now train new vocal models in as little as two months and handle millions of transactions per month with Microsoft Azure.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1750108992835776308-capitaland-azure-other-en-singapore\"&gt;&lt;strong&gt;CapitaLand&lt;/strong&gt;&lt;/a&gt; simplified internal processes, increasing efficiency to more than 10,000 worker days saved per year and deployed Azure OpenAI Service to build the first AI hospitality chatbot for its lodging business.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817800430022189544-cassidy-azure-openai-service-other-en-united-states\"&gt;&lt;strong&gt;Cassidy&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to enhance efficiency across various industries, supporting over 10,000 companies.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/2024/04/23/the-coca-cola-company-and-microsoft-announce-five-year-strategic-partnership-to-accelerate-cloud-and-generative-ai-initiatives/\"&gt;&lt;strong&gt;Coca-Cola&lt;/strong&gt;&lt;/a&gt; is implementing Azure OpenAI Service to develop innovative generative AI use cases across various business functions, including testing how Microsoft 365 Copilot could help improve workplace productivity.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1822762543599961678-denso-corporation-azure-open-ai-service-automotive-en-japan\"&gt;&lt;strong&gt;Denso&lt;/strong&gt;&lt;/a&gt; is developing “human-like” robots using Azure OpenAI Service as the brain to help robots and humans work together through dialogue.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/asia/features/to-keep-fish-and-shrimp-healthy-farmers-in-indonesia-now-have-a-copilot-to-help/\"&gt;&lt;strong&gt;eFishery&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI for farmers to get the data and insights on fish and shrimp farming, including more precise feeding and water quality monitoring.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790845375817388896-ey-power-apps-professional-services-en-united-states\"&gt;&lt;strong&gt;EY&lt;/strong&gt;&lt;/a&gt; developed an application that automatically matches and clears incoming payments in SAP, resulting in an increase from 30% to 80% in automatically cleared payments and 95% matched payments, with estimated annual time savings of 230,000 hours globally.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/sustainability/ai-tool-uses-sound-to-pinpoint-leaky-pipes-saving-precious-drinking-water/\"&gt;&lt;strong&gt;FIDO&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to develop an AI tool that uses sound to pinpoint leaky pipes, saving precious drinking water.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1800038623596257192-gatech-azure-ai-studio-higher-education-en-united-states\"&gt;&lt;strong&gt;Georgia Tech&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to enhance the electric vehicle (EV) charging infrastructure, achieving rapid data classification and predictive modeling, highlighting the reliability of networked chargers over non-networked ones.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749166093660637548-gigxr-azure-ai-speech-other-en-united-states\"&gt;&lt;strong&gt;GigXR&lt;/strong&gt;&lt;/a&gt; developed a solution to create the intelligence for specific AI patients using Microsoft Azure OpenAI Service and other Azure services.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/id-id/2024/09/10/goto-group-collaborates-with-microsoft-to-boost-engineering-productivity-with-github-copilot/\"&gt;&lt;strong&gt;GoTo Group&lt;/strong&gt;&lt;/a&gt; is significantly enhancing productivity and code quality across its engineering teams by adopting GitHub Copilot, saving over seven hours per week and achieving a 30% code acceptance rate.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1758740373423665704-govtech-azure-openai-service-professional-services-en-singapore\"&gt;&lt;strong&gt;GovTech&lt;/strong&gt;&lt;/a&gt; used Microsoft Azure OpenAI Service to create LaunchPad, sparking more than 400 ideas and 20 prototypes, laying the foundation for the government to harness the power of generative AI.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1771647415089854527-hrblock-azure-ai-studio-professional-services-en-united-states\"&gt;&lt;strong&gt;H&amp;amp;R Block&lt;/strong&gt;&lt;/a&gt; is using Azure AI Studio and Azure OpenAI Service to build a new solution that provides real-time, reliable tax filing assistance.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/from-bioscience-to-skin-care-startups-are-harnessing-ai-to-solve-problems-big-and-small/\"&gt;&lt;strong&gt;Haut.AI&lt;/strong&gt;&lt;/a&gt; provides skin care companies and retailers with customizable, AI-based skin diagnostic tools developed with the help of Microsoft AI.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://startups.microsoft.com/blog/are-you-ok-helfie-ai-aims-to-make-preventive-healthcare-accessible-to-all/\"&gt;&lt;strong&gt;Helfie&lt;/strong&gt;&lt;/a&gt; is building a solution that caters to healthcare providers who can arm their patients with an application to more quickly and accurately access the care they need.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/2024/06/03/hitachi-and-microsoft-enter-milestone-agreement-to-accelerate-business-and-social-innovation-with-generative-ai/\"&gt;&lt;strong&gt;Hitachi&lt;/strong&gt;&lt;/a&gt; will implement Azure OpenAI Service, Microsoft 365 Copilot and GitHub Copilot to create innovative solutions for the energy, mobility and other industries.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1723797353687211986-icertis-professional-services-azure-openai\"&gt;&lt;strong&gt;Icertis&lt;/strong&gt;&lt;/a&gt; is providing AI-based tools that will recognize contract language and then build algorithms to automatically choose the right approach based on the content of the contract.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1784680492304822753-itouch-corporation-microsoft-fabric-professional-services-en-japan\"&gt;&lt;strong&gt;ITOCHU&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service and Azure AI Studio to evolve its data analytics dashboard into a service that provides immediate recommendations by automatically creating evidence-based product proposals.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/11/07/german-ingenuity-meets-the-power-of-ai-to-shape-the-future-of-industries/\"&gt;&lt;strong&gt;IU International University of Applied Sciences (IU)&lt;/strong&gt;&lt;/a&gt; is using the power of Azure OpenAI Service to develop &lt;em&gt;Syntea&lt;/em&gt;, an AI avatar integrated into Microsoft Teams and Microsoft 365 Copilot, making learning more personalized, autonomous and flexible.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/ai/khan-academy-and-microsoft-partner-to-expand-access-to-ai-tools/\"&gt;&lt;strong&gt;Khan Academy&lt;/strong&gt;&lt;/a&gt; has partnered with Microsoft to bring time-saving and lesson-enhancing AI tools to millions of educators.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-cloud/blog/2024/11/07/german-ingenuity-meets-the-power-of-ai-to-shape-the-future-of-industries/\"&gt;&lt;strong&gt;Lufthansa Group&lt;/strong&gt;&lt;/a&gt; developed an animated 3D avatar called Digital Hangar to help guide passengers from initial travel inspiration to flight booking through an exchange with an avatar in natural language.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1779541850037077027-mhi-azure-discrete-manufacturing-en-japan\"&gt;&lt;strong&gt;Mitsubishi Heavy Industries&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service to help accelerate digital innovation in power plants.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814943470387755703-molslinjen-azure-service-fabric-travel-and-transportation-en-denmark\"&gt;&lt;strong&gt;Molslinjen&lt;/strong&gt;&lt;/a&gt; has created an AI analytics toolbox that has reduced fuel emissions, improved customer satisfaction and brought in millions of additional revenue.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1822396525953324537-novo-azure-openai-service-health-provider-en-denmark\"&gt;&lt;strong&gt;Novo Nordisk&lt;/strong&gt;&lt;/a&gt; recently published initial results with predictive AI models for advanced risk detection in cardiovascular diseases, including an algorithm that can predict patients’ cardiovascular risk better than the best clinical standards.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1731604994973070357-paigeai-azure-healthcare-en-united-states\"&gt;&lt;strong&gt;Paige.AI&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;​&lt;/strong&gt; is using AI and Microsoft Azure to accelerate cancer diagnoses with data from millions of images.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/emea/features/with-copilot-agents-pets-at-home-unleashes-an-ai-revolution/\"&gt;&lt;strong&gt;Pets at Home&lt;/strong&gt;&lt;/a&gt; created an agent to help its retail fraud detection team investigate suspicious transactions.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/from-bioscience-to-skin-care-startups-are-harnessing-ai-to-solve-problems-big-and-small/\"&gt;&lt;strong&gt;Plan Heal&lt;/strong&gt;&lt;/a&gt; is using Microsoft AI to create solutions that enable patients to monitor and report health metrics so care providers can better serve them.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/features/ai/how-ai-and-hpc-are-speeding-up-scientific-discovery/?msockid=1ca31778f9ac6e5b30e30249f8816fc6\"&gt;&lt;strong&gt;Pacific Northwest National Laboratory (PNNL)&lt;/strong&gt;&lt;/a&gt; is testing a new battery material that was found in a matter of weeks, not years, as part of a collaboration with Microsoft.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://unlocked.microsoft.com/rijksmuseum/\"&gt;&lt;strong&gt;Rijksmuseum&lt;/strong&gt;&lt;/a&gt; is harnessing the power of Copilot to make art accessible at scale by joining forces with Microsoft to improve and expand the art experience for blind and low-vision community members.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1820447052778490032-rnib-azure-ai-services-nonprofit-en-united-kingdom\"&gt;&lt;strong&gt;Royal National Institute of Blind People&lt;/strong&gt;&lt;/a&gt; is using Azure AI Services to develop an AI-based solution that quickly and accurately converts letters to braille, audio, and large print formats.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1745242950134216820-schneider-electric-azure-machine-learning-discrete-manufacturing-en-france\"&gt;&lt;strong&gt;Schneider Electric&lt;/strong&gt;&lt;/a&gt; provides productivity-enhancing and energy efficiency solutions and is using a whole suite of AI tools to hasten its own innovation and that of its customers.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-ca/story/1724583469377234521-spar-ics-retailer-cloud-for-retail\"&gt;&lt;strong&gt;SPAR ICS&lt;/strong&gt;&lt;/a&gt; created an award-winning, AI-enabled demand forecasting system achieving 90% inventory prediction accuracy.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1752392067274688790-suzuki-motor-corporation-azure-automotive-en-japan\"&gt;&lt;strong&gt;Suzuki Motor Corporation&lt;/strong&gt;&lt;/a&gt; is adopting Azure OpenAI Service for data security, driving company-wide use with five multipurpose apps.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://news.microsoft.com/source/latam/features/ai/tecnologico-de-monterrey-ai-ecosystem/?lang=en\"&gt;&lt;strong&gt;Tecnológico de Monterrey&lt;/strong&gt;&lt;/a&gt; created a generative AI-powered ecosystem built on Azure OpenAI Service with the goal to personalize education based on the students’ needs, improve the learning process, boost teachers’ creativity and save time on tedious tasks.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1723808815413508250-tomtom-azure-netherlands\"&gt;&lt;strong&gt;TomTom&lt;/strong&gt;&lt;/a&gt; is using Azure OpenAI Service, Azure Cosmos DB, and Azure Kubernetes Service to revolutionize the driver experience.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1805371430718336282-unilever-azure-consumer-goods-en-united-kingdom\"&gt;&lt;strong&gt;Unilever&lt;/strong&gt;&lt;/a&gt; is partnering with Microsoft to identify new digital capabilities to drive product innovation forward, from unlocking the secrets of our skin’s microbiome to reducing the carbon footprint of a multibillion-dollar business.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1769469533256482338-unity-technologies-azure-open-ai-service-gaming-en-united-states\"&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/a&gt; used Microsoft Azure OpenAI Service to build Muse Chat, an AI assistant that can guide creators through common questions and help troubleshoot issues to make game development easier.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1761232956003920370-usf-microsoft-copilot-higher-education-en-united-states\"&gt;&lt;strong&gt;University of South Florida&lt;/strong&gt;&lt;/a&gt; is using Microsoft 365 Copilot to alleviate the burden of repetitive, time-consuming tasks so faculty and staff can spend this time creatively solving problems, conducting critical research, establishing stronger relationships with peers and students and using their expertise to forge new, innovative paths.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1774868194783832907-visma-visual-studio-professional-services-en-norway\"&gt;&lt;strong&gt;Visma&lt;/strong&gt;&lt;/a&gt; has developed new code with GitHub Copilot, Microsoft Azure DevOps and Microsoft Visual Studio as much as 50 percent faster, contributing to increased customer retention, faster time to market and increased revenue.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1786814215980808594-wilh-wilhelmsen-microsoft-viva-goals-travel-and-transportation-en-norway\"&gt;&lt;strong&gt;Wallenius Wilhelmsen&lt;/strong&gt;&lt;/a&gt; is implementing Microsoft 365 Copilot and using Microsoft Viva to drive sustainable adoption, streamlining processes, empowering better decision making and cultivating a culture of innovation and inclusion.&lt;/li&gt;&lt;li&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1749551971490840608-wipro-microsoft-365-professional-services-en-india\"&gt;&lt;strong&gt;Wipro&lt;/strong&gt;&lt;/a&gt; is committed to delivering value to customers faster and improving the outcomes across the business by investing $1 billion in AI and training 200,000 employees on generative AI principles with Microsoft Copilot.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Read more&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Get the study: &lt;a href=\"https://info.microsoft.com/ww-landing-business-opportunity-of-ai.html\"&gt;Business Opportunity of AI | Microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Explore Microsoft AI solutions: &lt;a href=\"https://www.microsoft.com/en-us/ai\"&gt;Artificial Intelligence Solutions | Microsoft AI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Assess your AI readiness: &lt;a href=\"https://adoption.microsoft.com/en-us/ai-readiness-wizard/\"&gt;AI Readiness Wizard – Microsoft Adoption&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Build a strategic plan for AI: &lt;a href=\"https://info.microsoft.com/ww-landing-ai-strategy-roadmap-navigating-the-stages-of-ai-value-creation.html?lcid=EN-US\"&gt;AI Strategy Roadmap | Microsoft AI&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;IDC InfoBrief: sponsored by Microsoft, 2024 Business Opportunity of AI, IDC# US52699124, November 2024&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/https-blogs-microsoft-com-blog-2024-11-12-how-real-world-businesses-are-transforming-with-ai/\"&gt;How real-world businesses are transforming with AI &amp;#8211; with 40+ new stories&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>IDC’s 2024 AI opportunity study: Top five AI trends to watch</title>\t\t<link>https://blogs.microsoft.com/blog/2024/11/12/idcs-2024-ai-opportunity-study-top-five-ai-trends-to-watch/</link>\t\t\t\t<dc:creator>Alysa Taylor</dc:creator>\t\t<pubDate>Tue, 12 Nov 2024 17:00:02 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>AI</category>\t\t<category>Azure OpenAI Service</category>\t\t<category>Copilot</category>\t\t<category>Dax Copilot</category>\t\t<category>Microsoft 365 Copilot</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562124</guid>\t\t\t\t\t<description>&lt;p&gt;Updated Dec. 9, 2024: The number of individuals Microsoft helped train and certify over the past year has been updated to 23 million and includes initiatives across Microsoft. In 2024, generative AI emerged as a key driver for business outcomes across every industry. Already this new generation of AI is having an incredible impact on...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/idcs-2024-ai-opportunity-study-top-five-ai-trends-to-watch/\"&gt;IDC’s 2024 AI opportunity study: Top five AI trends to watch&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;&lt;em&gt;Updated Dec. 9, 2024: The number of individuals Microsoft helped train and certify over the past year has been updated to 23 million and includes initiatives across Microsoft.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;In 2024, generative AI emerged as a key driver for business outcomes across every industry. Already this new generation of AI is &lt;strong&gt;&lt;a href=\"https://protect.checkpoint.com/v2/___https:/aka.ms/AIcustomersBlog___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjI0ZmFhZWY0OGM5YjcwMTU4OWNlY2JmYmNjZTI4MGZjOjY6MjI2YzoyYzY5NTMwNmZmNTM4YmZiYTIzOGE2ZDdhMjU3N2JjYWNhYWMwMDgyZDUwYmIxMjI2YmM1YTUwZjVmNThkNzMwOnA6RjpG\"&gt;having an incredible impact&lt;/a&gt; &lt;/strong&gt;on our world — yet companies and industries are just scratching the surface of what’s possible as they continue to develop new use cases across every role and function.&lt;/p&gt;&lt;p&gt;To help guide organizations on their AI transformation journey, Microsoft recently commissioned a new study through IDC, &lt;a href=\"https://protect.checkpoint.com/v2/___https:/info.microsoft.com/ww-landing-business-opportunity-of-ai.html___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6YzEzMzo1Y2E2ZTI1ZTgyNzNiMjQ0ZDhjOTJhMmRjNjA1YzRhNWIwNGU4MjcwZmRjNDc0YjBmZjFkNDhmZDg4MDNjM2YwOnA6VDpG\"&gt;&lt;strong&gt;The Business Opportunity of AI&lt;/strong&gt;&lt;/a&gt;. IDC’s findings show that when organizations truly commit to and invest in AI, the return on investment (ROI) potential grows significantly.&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920.jpg\"&gt;&lt;img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-52562191 size-full\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920.jpg\" alt=\"A graphic showing the IDC study’s top 3 key findings.\" width=\"995\" height=\"560\" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920.jpg 995w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920-300x169.jpg 300w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920-768x432.jpg 768w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920-960x540.jpg 960w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/OMB-IDC_Social-Stat-2_1080x1920-480x270.jpg 480w\" sizes=\"(max-width: 995px) 100vw, 995px\" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;According to IDC, the study’s findings reflect a tipping point as AI gains momentum across industries. As companies worldwide go deeper with AI, Microsoft customers continue to deploy innovative new solutions and discover how tools like &lt;a href=\"https://news.microsoft.com/source/?post_type=features&amp;amp;p=8580\"&gt;Copilot can transform their day-to-day work&lt;/a&gt;. In telecommunications, &lt;a href=\"https://protect.checkpoint.com/v2/___https:/news.microsoft.com/source/features/digital-transformation/the-only-way-how-copilot-is-helping-propel-an-evolution-at-lumen-technologies___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6OTdkYzoxYjM0ZDU2ZDhiNjFiNTkyNGRiMzZlZDkzOGE5M2U2NTRiZTgyYzRjYzA4MWJhZGFkNDFlODQ5ZWE0NWFkMGUwOnA6VDpG\"&gt;Lumen Technologies&lt;/a&gt; estimates Copilot is saving sellers an average of four hours a week, equating to $50 million annually. In healthcare, &lt;a href=\"https://protect.checkpoint.com/v2/___https:/news.microsoft.com/source/asia/features/taiwan-hospital-deploys-ai-copilots-to-lighten-workloads-for-doctors-nurses-and-pharmacists___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6OGVkMTo5YmJiOGY1MDE3Y2M4ZjIwYWIyNTU5OTgzN2M2ZDJiYzZlZDg4NDM4OGRhYjdhZjQ4MWMyMDVkZmFkZjIxYzljOnA6VDpG\"&gt;Chi Mei Medical Center&lt;/a&gt; doctors now spend 15 minutes instead of an hour writing medical reports, and nurses can document patient information in under five minutes. Pharmacists are now able to double the number of patients they see per day. In retail, AI models help &lt;a href=\"https://protect.checkpoint.com/v2/___https:/news.microsoft.com/source/asia/features/coles-deepens-its-relationship-with-shoppers-using-ai-to-understand-the-customer-experience-and-improve-efficiency-in-store___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6YjM3ODplZDFmODU5OTM4ODRhMTJiYTVjNmFmNDU5N2U0OTBjZGY0ZDExMWVmZTA5YjVmM2U2ZTI1YTNiOTM3YzBlY2Y1OnA6VDpG\"&gt;Coles&lt;/a&gt; predict the flow of 20,000 stock-keeping units to 850 stores with remarkable accuracy, generating 1.6 billion predictions daily.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;IDC’s 2024 top 5 trends for AI&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;IDC’s findings align with what Microsoft is seeing as we work with companies across industries to deploy AI. We’ve highlighted &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/how-real-world-businesses-are-transforming-with-ai/\"&gt;more than 200 of our top AI customer stories&lt;/a&gt; to show a sampling of how AI is already driving impact today. Below is a look at the top trends we’re seeing in IDC’s study and the impact of those trends on organizations working with AI today.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;#1 Enhanced productivity has become table stakes.&lt;/strong&gt; Employee productivity is the No. 1 business outcome that companies are trying to achieve with AI. The study shows that 92% of AI users surveyed are using AI for productivity, and 43% say productivity use cases have provided the greatest ROI. While productivity is a top goal, generative AI use cases that are close behind include customer engagement, topline growth, cost management and product or service innovation — and nearly half of the companies surveyed expect AI to have a high degree of impact across all those areas over the next 24 months.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Customer snapshot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;At the global marketing and advertising agency dentsu, employees are already saving 15 to 30 minutes a day using Copilot for tasks such as summarizing chats, generating presentations and building executive summaries.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;strong&gt;&lt;em&gt;“Copilot has transformed the way we deliver creative concepts to our clients, enabling real-time collaboration. Agility, security and uniqueness are crucial, but our goal is to lead this transformation company-wide, from top to bottom.&amp;#8221; &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;— Takuya Kodama, Business Strategy Manager at dentsu&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;#2 Companies are gravitating to more advanced AI solutions. &lt;/strong&gt;In the next 24 months, more companies expect to build custom AI solutions tailored directly to industry needs and business processes, including custom copilots and AI agents. This shows a growing maturity in AI fluency as companies realize the value of out-of-the-box use cases and expand to more advanced scenarios.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Customer snapshot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Siemens has developed the Siemens Industrial Copilot, which has eased the challenges caused by increasing complexity and labor shortages for dozens of customers in different industries.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;strong&gt;&lt;em&gt;“In full appreciation of GenAI’s transformational potential, it&amp;#8217;s important to remember that production does not have an ‘undo’ button. It takes diligence and effort to mature AI to industrial-grade quality. The Siemens Industrial Copilot for Engineering significantly eases our customers’ workload and addresses the pressing challenges of skill shortages and increasing complexity in industrial automation. This AI-powered solution is a game-changer for our industry with over 50 customers already using it to boost efficiency and tackle labor shortages.”&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;— Boris Scharinger, AI Strategist at Siemens Digital Industries&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;#3 Generative AI adoption and value is growing across industries.&lt;/strong&gt; Even though it is relatively new to the market, generative AI adoption is rapidly expanding — 75% of respondents report current usage up from 55% in 2023. The ROI of generative AI is highest in Financial Services, followed by Media &amp;amp; Telco, Mobility, Retail &amp;amp; Consumer Packaged Goods, Energy, Manufacturing, Healthcare and Education. Overall, generative AI is generating higher ROI across industries.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Customer snapshot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Providence has leveraged AI to extend and enhance patient care, streamline processes and workflows and improve the effectiveness of caregivers.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;&lt;strong&gt;“Whether we’re partnering with organizations on the leading edge of this technology — like Microsoft — and building bespoke solutions through Azure OpenAI Service, advancing clinical research to help cancer patients receive personalized and precise treatments faster, or ‘hitting the easy button’ and adopting established technologies like Microsoft 365 Copilot or DAX Copilot, we have successfully stayed on the forefront of this tech revolution. For example, physicians who use DAX Copilot save an average of 5.33 minutes per visit, and 80% of physicians have reported lower cognitive burden after using DAX Copilot.”&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;— Sarah Vaezy, EVP, Chief Strategy and Digital Officer at Providence&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;#4 AI leaders are seeing greater returns and accelerated innovation.&lt;/strong&gt; While companies using generative AI are averaging $3.7x ROI, the top leaders using generative AI are realizing significantly higher returns, with an average ROI of $10.3. In addition to the enhanced business value, leaders are also on an accelerated path to build and implement new solutions — 29% of leaders implement AI in less than 3 months versus 6% of companies in the laggard category.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Customer snapshot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Södra is an international forest industry group that processes forest products from 52,000 owners into renewable, climate-smart products for international market. Every day Södra collects and interprets climate impact data to make thousands of decisions for every part of the value chain.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;&lt;strong&gt;“With innovative AI technology from Microsoft, our business experts and data scientists have been able to help make us more sustainable while also improving revenue significantly.”&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;— Cristian Brolin, Chief Digital Officer at Södra&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;#5 Looking ahead: Skilling remains a top challenge&lt;/strong&gt;. Thirty percent of respondents indicated a lack of specialized AI skills in-house, and 26 percent say they lack employees with the skills needed to learn and work with AI. This dovetails with findings from the &lt;strong&gt;&lt;a href=\"https://protect.checkpoint.com/v2/___https:/www.microsoft.com/en-us/worklab/work-trend-index/ai-at-work-is-here-now-comes-the-hard-part___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6OTVmMzpmYWVjMDJkZmE4ODNlNDYwNDZlN2UzY2ZlNDY3NDQ3YjJjNTIxODgwYTk1YTljNjQ4ZDE0YTgzNDE1MzRkMjlhOnA6VDpG\"&gt;Microsoft and LinkedIn 2024 Work Trend Index Annual Report&lt;/a&gt;&lt;/strong&gt;, which found that 55 percent of business leaders are concerned about having enough skilled talent to fill roles.&lt;/p&gt;&lt;p&gt;That is why over the past year we have helped train and certify over 23 million people in more than 200 countries in digital skills. And we are committed to working in partnership with governments, educational institutions, industry and civil society to help millions more learn to use AI.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Customer snapshot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The University of South Florida (USF) is partnering with Microsoft to streamline processes and enhance innovation for all aspects of university operations with AI.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=\"color: #cc99ff;\"&gt;&lt;em&gt;&lt;strong&gt;“We’re giving students a leg up to do amazing things with AI as part of tomorrow’s workforce. Our focus on generative AI not only drives operational efficiency but also empowers our community to unlock new levels of creativity and impact, further positioning USF as a leader in AI adoption, which includes being among the first universities in the nation to form a college dedicated to AI, cybersecurity and computing.&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style=\"color: #cc99ff;\"&gt;— Sidney Fernandes, CIO &amp;amp; VP of Digital Experiences at University of South Florida&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24.png\"&gt;&lt;img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" class=\"alignnone size-full wp-image-52562192\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24.png\" alt=\"A graphic showing key data from the IDC study. \" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24.png 1920w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-300x169.png 300w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-1024x576.png 1024w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-768x432.png 768w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-1536x864.png 1536w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-960x540.png 960w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/11/NEW-IDC_Social-Stat-10x-_1920x1080_Final-Final_11_11_24-480x270.png 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" /&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;AI’s growing economic impact&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;While companies today are largely implementing out-of-the-box generative AI solutions and seeing significant ROI, more than half of those surveyed expect to build custom industry and line-of-business applications in the next 24 months — demonstrating that today’s ROI is quickly becoming tomorrow&amp;#8217;s competitive edge.&lt;/p&gt;&lt;p&gt;&amp;#8220;We are at an inflection point of autonomous agent development and are beginning an evolution from using just off-the-shelf assistants and copilots that support knowledge discovery and content generation to custom AI agents to execute complex, multistep workflows across a digital world,&amp;#8221; says Ritu Jyoti, GVP/GM, AI and Data Research at IDC. &amp;#8220;With responsible technology usage and workplace transformation, IDC predicts that business spending to adopt AI will have a cumulative global economic impact of $19.9 trillion through 2030 and drive 3.5% of global GDP in 2030.&amp;#8221;&lt;/p&gt;&lt;p&gt;Key findings from &lt;a href=\"https://protect.checkpoint.com/v2/___https:/info.microsoft.com/ww-landing-business-opportunity-of-ai.html___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6YzEzMzo1Y2E2ZTI1ZTgyNzNiMjQ0ZDhjOTJhMmRjNjA1YzRhNWIwNGU4MjcwZmRjNDc0YjBmZjFkNDhmZDg4MDNjM2YwOnA6VDpG\"&gt;IDC’s The Business Opportunity&lt;/a&gt; of AI study include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Generative AI usage jumped from 55% in 2023 to 75% in 2024.&lt;/li&gt;&lt;li&gt;For every $1 a company invests in generative AI, the ROI is $3.7x.&lt;/li&gt;&lt;li&gt;The top leaders using generative AI are realizing an ROI of $10.3.&lt;/li&gt;&lt;li&gt;On average, AI deployments are taking less than 8 months and organizations are realizing value within 13 months.&lt;/li&gt;&lt;li&gt;Within 24 months, most organizations plan to expand beyond pre-built AI solutions to advanced AI workloads that are customized or custom-built.&lt;/li&gt;&lt;li&gt;The ROI of generative AI is highest in Financial Services, followed by Media &amp;amp; Telco, Mobility, Retail &amp;amp; Consumer Packaged Goods, Energy, Manufacturing, Healthcare and Education.&lt;/li&gt;&lt;li&gt;43% say productivity use cases have provided the greatest ROI.&lt;/li&gt;&lt;li&gt;The primary way that organizations are monetizing AI today is through productivity use cases. In the next 24 months, a greater focus will be placed on functional and industry use cases.&lt;/li&gt;&lt;li&gt;The top barrier when implementing AI is the lack of both technical and day-to-day AI skills.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;Learn how to fuel your AI journey&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;IDC’s study, which included more than 4,000 business leaders and AI decision-makers around the world, also identifies the top barriers organizations face when implementing AI. As businesses integrate new solutions, they navigate important considerations such as data privacy, responsible use and the need for investment in both technology and skills.&lt;/p&gt;&lt;p&gt;No matter where you are in your cloud and AI transformation journey, Microsoft can help. To learn more about how customers across industries are shaping their AI transformation with Microsoft, please visit &lt;a href=\"https://protect.checkpoint.com/v2/___https:/news.microsoft.com/ai-in-action___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6OTNlYjpiMDE2ZDI4ZWY1MjRlNjM4NGFiNDQyMDRlMGJkZGQyMGNjNDA0MmYxMjFjMWY4N2ExYjE4NDAyMDhmOTU5NDM0OnA6VDpG\"&gt;Microsoft’s AI in Action page&lt;/a&gt;. For more on how to get started in your AI transformation journey, visit &lt;a href=\"https://protect.checkpoint.com/v2/___https:/www.microsoft.com/en-us/ai___.YzJ1OndlY29tbXVuaWNhdGlvbnM6YzpvOjAxZWUwM2NlMzljZjdjMTA0YjIwYWViMmQ1MGYxYmU0OjY6ZjM1NjozOTM5MGNkNGM4NzA1YTEzNDdkMTkzZWMzNzNiNjczODk4MjM1MTNkYTQwYThmZTNiNGNlN2FmZjJmY2E5NTE2OnA6VDpG\"&gt;Microsoft AI&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span data-teams=\"true\"&gt;&lt;i&gt;IDC InfoBrief: sponsored by Microsoft, 2024 Business Opportunity of AI, IDC# US52699124, November 2024&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/11/12/idcs-2024-ai-opportunity-study-top-five-ai-trends-to-watch/\"&gt;IDC’s 2024 AI opportunity study: Top five AI trends to watch&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>Microsoft names Jay Parikh as a member of the senior leadership team</title>\t\t<link>https://blogs.microsoft.com/blog/2024/10/31/microsoft-names-jay-parikh-as-a-member-of-the-senior-leadership-team/</link>\t\t\t\t<dc:creator>Microsoft Corporate Blogs</dc:creator>\t\t<pubDate>Thu, 31 Oct 2024 16:01:05 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562167</guid>\t\t\t\t\t<description>&lt;p&gt;Satya Nadella, Chairman and CEO, shared the below communication with Microsoft employees this morning. When I look to the next phase of Microsoft, both in terms of our scale and our massive opportunity ahead, it’s clear that we need to continue adding exceptional talent at every level of the organization to increase our depth and...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/31/microsoft-names-jay-parikh-as-a-member-of-the-senior-leadership-team/\"&gt;Microsoft names Jay Parikh as a member of the senior leadership team&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;&lt;em&gt;Satya Nadella, Chairman and CEO, shared the below communication with Microsoft employees this morning.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;When I look to the next phase of Microsoft, both in terms of our scale and our massive opportunity ahead, it’s clear that we need to continue adding exceptional talent at every level of the organization to increase our depth and capability across our business priorities – spanning security, quality, and AI innovation.&lt;/p&gt;&lt;figure id=\"attachment_52562170\" aria-describedby=\"caption-attachment-52562170\" style=\"width: 300px\" class=\"wp-caption alignleft\"&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final.jpg\"&gt;&lt;img loading=\"lazy\" decoding=\"async\" class=\"wp-image-52562170 size-medium\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final-300x275.jpg\" alt=\"A photo of Jay Parikh, a member of the senior leadership team.\" width=\"300\" height=\"275\" srcset=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final-300x275.jpg 300w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final-1024x937.jpg 1024w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final-768x703.jpg 768w, https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Jay_Parikh_bw_Final.jpg 1050w\" sizes=\"(max-width: 300px) 100vw, 300px\" /&gt;&lt;/a&gt;&lt;figcaption id=\"caption-attachment-52562170\" class=\"wp-caption-text\"&gt;Jay Parikh&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;With that context, I’m excited to share that Jay Parikh is joining Microsoft as a member of the senior leadership team (SLT), reporting to me. Jay was the global head of engineering at Facebook (now Meta) and most recently was CEO of Lacework. He has an impressive track record, with a unique combination of experiences building and scaling technical teams that serve both commercial customers and consumers. His deep connections across the start-up and VC ecosystems, coupled with his leadership roles at Akamai and Ning, will bring valuable perspective to Microsoft.&lt;/p&gt;&lt;p&gt;Over the years I’ve known Jay, I’ve admired him as a technology leader and respected engineer with a deep commitment to driving innovation and striving for operational excellence. His focus extends beyond technology, with his passion for and dedication to developing people, fostering a strong culture, and building world-class talent, all in service of delivering faster value to customers and driving business growth. In fact, there are very few leaders in our industry with Jay’s experience in leading teams through the rapid growth and scale required to support today’s largest internet businesses.&lt;/p&gt;&lt;p&gt;As he onboards, Jay will immerse himself in learning about our company priorities and our culture and will spend time connecting with our senior leaders and meeting with customers, partners, and employees around the world. We will share more on his role and focus in the next few months.&lt;/p&gt;&lt;p&gt;Please join me in welcoming Jay to Microsoft.&lt;/p&gt;&lt;p&gt;Satya&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/31/microsoft-names-jay-parikh-as-a-member-of-the-senior-leadership-team/\"&gt;Microsoft names Jay Parikh as a member of the senior leadership team&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>How Copilots are helping customers and partners drive pragmatic innovation to achieve business results that matter</title>\t\t<link>https://blogs.microsoft.com/blog/2024/10/29/how-copilots-are-helping-customers-and-partners-drive-pragmatic-innovation-to-achieve-business-results-that-matter/</link>\t\t\t\t<dc:creator>Judson Althoff</dc:creator>\t\t<pubDate>Tue, 29 Oct 2024 16:00:05 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>Azure</category>\t\t<category>Azure AI Services</category>\t\t<category>Azure Cognitive Services</category>\t\t<category>Azure Databricks</category>\t\t<category>Azure OpenAI Service</category>\t\t<category>Azure Quantum Elements</category>\t\t<category>Azure Stack HCI</category>\t\t<category>Copilot</category>\t\t<category>Copilot for Sales</category>\t\t<category>Copilot for Security</category>\t\t<category>Copilot Studio</category>\t\t<category>Dax Copilot</category>\t\t<category>GitHub Copilot</category>\t\t<category>Microsoft 365</category>\t\t<category>Microsoft 365 Copilot</category>\t\t<category>Microsoft AI Tour</category>\t\t<category>Microsoft Cloud for Manufacturing</category>\t\t<category>Microsoft Dynamics 365</category>\t\t<category>Microsoft Fabric</category>\t\t<category>Microsoft Ignite</category>\t\t<category>Microsoft Power Platform</category>\t\t<category>Microsoft Sentinel</category>\t\t<category>Microsoft Teams</category>\t\t<category>Microsoft Viva</category>\t\t<category>Power Automate</category>\t\t<category>Power BI</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562084</guid>\t\t\t\t\t<description>&lt;p&gt;The pace of AI innovation today continues to be extraordinary, and at Microsoft we are focused on helping organizations embrace it. By providing our customers with the most advanced AI technology across every product we build — combined with our unparalleled partner ecosystem and co-innovation approach — we are helping them make real progress in...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/29/how-copilots-are-helping-customers-and-partners-drive-pragmatic-innovation-to-achieve-business-results-that-matter/\"&gt;How Copilots are helping customers and partners drive pragmatic innovation to achieve business results that matter&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;The pace of AI innovation today continues to be extraordinary, and at Microsoft we are focused on helping organizations embrace it. By providing our customers with the most advanced AI technology across every product we build — combined with our unparalleled partner ecosystem and co-innovation approach — we are helping them make real progress in ways that matter. I am proud to share over &lt;a href=\"#customerstories\"&gt;100 customer stories&lt;/a&gt; from this quarter alone showing how we are helping customers accelerate AI Transformation — no matter where they are on their journey.&lt;/p&gt;&lt;p&gt;Recently during the &lt;a href=\"https://aitour.microsoft.com/en-US/home\"&gt;Microsoft AI Tour&lt;/a&gt;, I spoke with customers who shared ways they are adopting Copilots to empower human achievement, democratize intelligence and realize significant business value. I also discussed the concept of an AI-first business process and the differentiation you can drive when bringing together the power of Copilots &lt;strong&gt;&lt;em&gt;and&lt;/em&gt;&lt;/strong&gt; human ambition with the autonomous capabilities of an agent. I was inspired by the outcomes our customers have achieved through pragmatic innovation and the progress they are making to evolve the future of industry. I am pleased to share ten stories from the past quarter that illustrate how Copilots have yielded results for our customers, while highlighting AI Transformation experiences in their own words.&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/accenture-avanade-copilot\"&gt;&lt;strong&gt;Accenture and Avanade&lt;/strong&gt;&lt;/a&gt; have a long history of helping customers implement cutting-edge solutions, with internal testing a key factor in their ability to deliver customizable Microsoft solutions with deep expertise. Putting Microsoft 365 Copilot into the hands of employees helped them realize ways to increase productivity, with &lt;strong&gt;52% of employees seeing a positive impact on the quality of their work, 31% reporting less cognitive fatigue and 84% finding Copilot’s suggestions fair, respectful and non-biased&lt;/strong&gt;. Accenture also piloted GitHub Copilot to help build better solutions faster with developers spending less time debugging, &lt;strong&gt;resulting in 95% of developers reporting they enjoyed coding more&lt;/strong&gt;.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&amp;#8220;Using our extensive Microsoft technology expertise and practical learnings from our own experience implementing Microsoft 365 Copilot, our solutions empower clients to fully tap into Microsoft AI capabilities.&amp;#8221; &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Veit Siegenheim, Global Future of Work Lead at Avanade&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Nigerian multinational financial services group &lt;a href=\"https://customers.microsoft.com/en-us/story/1802756598954587083-access-holdings-plc-microsoft-365-banking-and-capital-markets-en-nigeria\"&gt;&lt;strong&gt;Access Holdings Plc.&lt;/strong&gt;&lt;/a&gt; serves more than 56 million customers across 18 countries. As the business grew and transitioned from a small bank to a major holding company, it adopted Microsoft 365 Copilot to address challenges in data management, meeting productivity and software development. With the integration of Copilot into daily tools, the company significantly enhanced efficiency and engagement across the business. &lt;strong&gt;Writing code now takes two hours instead of eight, chatbots can be launched in 10 days instead of three months and presentations can be prepared in 45 minutes instead of six hours. Copilot has also driven a 25% increase in staff engagement during meetings.&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&amp;#8220;To inspire everyone in the organization to take advantage of AI, we knew we had to integrate AI into the tools people use every day. Microsoft 365 Copilot made the most sense and was a natural fit for us&lt;/em&gt;&lt;em&gt;.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Lanre Bamisebi, Executive Director IT and Digitalization at Access Holdings, Plc.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;To improve resident services and reinvent customer engagement, the &lt;a href=\"https://customers.microsoft.com/en-us/story/1817161013472137094-burlington-microsoft-copilot-studio-national-government-en-canada\"&gt;&lt;strong&gt;City of Burlington&lt;/strong&gt;&lt;/a&gt;, Ontario, embraced AI and low-code tools to develop new online services that transform and automate internal processes. In just eight weeks, the city utilized Copilot Studio to develop and launch a custom copilot designed to help residents quickly find answers to frequently asked questions. The city also developed a portal that streamlines building permit reviews and enables customers to track the status of their own applications. As a result, &lt;strong&gt;the average time it takes to process a permit approval decreased from 15 weeks to 5-7 weeks, allowing more time for city employees to evaluate complex submissions&lt;/strong&gt;.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Our staff and citizens do not have to worry about mundane tasks as much anymore. Now they’re able to have rich, collaborative conversations about how to creatively solve problems, making for a much more fulfilling and rewarding work and customer experience&lt;/em&gt;.”&lt;/p&gt;&lt;p&gt;Chad MacDonald, Executive Director and Chief Information Officer at the City of Burlington&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1813696493334607461-finastra-microsoft-copilot-for-microsoft-365-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Finastra&lt;/strong&gt;&lt;/a&gt; empowers financial institutions with leading software for lending, payments, treasury, capital markets and universal banking. To transform its marketing processes, the company used Microsoft 365 Copilot to automate tasks, enhance content creation, improve analytics and personalize customer interactions. Since integrating Copilot, the team &lt;strong&gt;reduced time-to-market for campaigns from three months to less than one&lt;/strong&gt;. Copilot also significantly reduced the time marketers spend generating and gathering insights from each campaign, with &lt;strong&gt;employees citing a 20%-50% time savings across&lt;/strong&gt; tasks like full-funnel analysis, supply management analysis and budget management.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Copilot makes you more effective because you get better insights, and it makes you more efficient because you can produce results faster. It also makes work more meaningful and fun because your team can focus on what matters — strategy, creativity and everything that sets you apart from the competition.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Joerg Klueckmann, Head of Corporate Marketing and Communications at Finastra&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/id-id/2024/09/10/goto-group-collaborates-with-microsoft-to-boost-engineering-productivity-with-github-copilot/\"&gt;&lt;strong&gt;GoTo Group&lt;/strong&gt;&lt;/a&gt; provides technology infrastructure and solutions across Indonesia. It is bending the curve on innovation by significantly enhancing productivity and code quality across its engineering teams by adopting GitHub Copilot. With real-time code suggestions, chat assistance and the ability to break down complex coding concepts, &lt;strong&gt;the company has saved over seven hours per week and achieved a 30% code acceptance rate &lt;/strong&gt;within the first month. With 1,000 engineers already using GitHub Copilot, the tool allows them to innovate faster, reduce errors and focus more time on complex tasks to deliver greater value to their users.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“GitHub Copilot has significantly reduced syntax errors and provided helpful autocomplete features, eliminating repetitive tasks and making coding more efficient. This has allowed me to focus on the more complex elements in building great software.” &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Nayana Hodi, Engineering Manager at GoTo Group&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;South Africa’s &lt;a href=\"https://customers.microsoft.com/en-us/story/1794371049083171324-milpark-education-dynamics-365-customer-service-higher-education-en-south-africa\"&gt;&lt;strong&gt;Milpark Education&lt;/strong&gt;&lt;/a&gt; faced operational challenges when shifting to online learning due to legacy systems slowing down student interactions and support. Through close collaboration with Enterprisecloud, Milpark migrated its back-office infrastructure to Azure within three months, replacing its legacy student admissions system with an extensible, integrated digital platform powered by technologies such as Microsoft Copilot and Copilot Studio. &lt;strong&gt;In just four months, the educational institution improved efficiency and accuracy of student support, decreasing the average resolution time by 50% and escalations by more than 30%. &lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Using Copilot, agents are now able to use generative AI to rapidly get up to speed on case details and respond to students using standardized templates that help them provide more personalized and professional responses. The results speak for themselves.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Shaun Dale, Managing Director at Enterprisecloud&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;For over two decades, &lt;a href=\"https://customers.microsoft.com/en-us/story/1805001416118108722-teladochealth-power-apps-health-provider-en-united-states\"&gt;&lt;strong&gt;Teladoc Health&lt;/strong&gt;&lt;/a&gt; has been offering a broad spectrum of services to patients using virtual care services — from primary care to chronic condition management. After the rapid growth of telehealth adoption post-pandemic, operational efficiency was instrumental in managing internal processes and external client interactions. By deploying Microsoft 365 Copilot and using Copilot in Power Automate, the company has reshaped business processes to help employees realize greater time savings while enhancing the client experience. The Copilots and agents &lt;strong&gt;helped employees save five hours per week and thousands of enterprise hours annually &lt;/strong&gt;by eliminating mundane daily processes and fostering better cross-department communications, while also&lt;strong&gt; helping new employees get set up to run their workflows 20% faster.&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Copilot is changing the way we work. It’s not just about saving time; it’s about enhancing the quality of our work, allowing us to focus on what truly matters: delivering exceptional care to our members.” &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Heather Underhill, SVP Client Experience &amp;amp; Operations at Teladoc Health&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;International energy company &lt;a href=\"https://customers.microsoft.com/en-us/story/1802017730982552224-uniper-se-microsoft-copilot-for-microsoft-365-energy-en-germany\"&gt;&lt;strong&gt;Uniper&lt;/strong&gt;&lt;/a&gt; adopted a single-cloud strategy with Azure as its foundation to drive rapid AI innovation. To help its employees focus on using core competencies, the company implemented Microsoft 365 Copilot to reduce time spent on manual and repetitive tasks, and help workers focus on more pressing work, such as developing enhanced solutions to speed up the energy transition. Its in-house auditors have already &lt;strong&gt;increased productivity by 80% by using Copilot&lt;/strong&gt; to create plans and checklists. &lt;strong&gt;Uniper is also using Copilot for Security to help identify risks twice as fast&lt;/strong&gt; &lt;strong&gt;and take appropriate action sooner&lt;/strong&gt;.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“As an operator of critical infrastructure, we have to contend with a growing number of reports of phishing and attacks by hackers. AI can help us implement a sensible way of managing the sheer number of threats.” &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Damian Bunyan, CIO at Uniper&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;British telecommunications company &lt;a href=\"https://ukstories.microsoft.com/features/vodafone-to-roll-out-microsoft-365-copilot-to-68000-employees-to-boost-productivity-innovation-quality/\"&gt;&lt;strong&gt;V&lt;/strong&gt;&lt;strong&gt;odafone&lt;/strong&gt;&lt;/a&gt; has transformed its workplace productivity with Microsoft 365 Copilot, already seeing strong ROI from its adoption. In early trials, Copilot saved employees an average of three hours per week by using the tool to draft emails, summarize meetings and search for information. Copilot is also enriching the employee experience, with &lt;strong&gt;90% of users reporting they are eager to continue using Copilot and 60% citing improved work quality&lt;/strong&gt;. For Vodafone’s legal and compliance team, &lt;strong&gt;Copilot has significantly accelerated the processes of drafting new contracts, reducing the time required to complete this work by one hour&lt;/strong&gt;. As a result of these efficiency gains, Vodafone is rolling out Copilot to 68,000 employees.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Our AI journey is focusing on three areas: operational efficiency inside the organization; rewiring the business to provide an enhanced customer experience; and unlocking growth opportunities through new products and services that we can create around generative AI. Copilot will help drive all three.”&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Scott Petty, Chief Technology Officer at Vodafone&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1786814215980808594-wilh-wilhelmsen-microsoft-viva-goals-travel-and-transportation-en-norway\"&gt;&lt;strong&gt;Wallenius Wilhelmsen&lt;/strong&gt;&lt;/a&gt;, a global leader in roll-on/roll-off shipping and vehicle logistics, is empowering better decision-making while fostering a culture of innovation and inclusion with AI tools. After participating in an early access program, the company broadly adopted Microsoft Copilot 365 to help streamline processes, enhance data management and improve communication across its 28 countries. To help strengthen Copilot immersion and realize value faster, they introduced a seven-week Microsoft Viva campaign to teach, communicate and measure Copilot adoption. The campaign resulted in &lt;strong&gt;80% of employees using Copilot, with some teams realizing time savings of at least 30 minutes per day&lt;/strong&gt;. The company also uses Copilot Dashboard to manage usage and gather user feedback, helping demonstrate ROI and measure results outside of time savings alone.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;“Copilot changes the way we think and work while keeping us curious and open to embracing opportunities. I think that is the sort of benefit that is not so measurable, but important. So, my time management and structured approach to my everyday work life has been enhanced with Copilot and Viva.&amp;#8221;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Martin Hvatum, Senior Global Cash Manager at Wallenius Wilhelmsen&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I believe that no other company has a better foundation to facilitate your AI Transformation than Microsoft. As we look ahead to &lt;a href=\"https://ignite.microsoft.com/en-US/home\"&gt;Microsoft Ignite,&lt;/a&gt; I am excited by the latest innovation we will announce as a company, and the customer and partner experiences we will share. We remain committed to driving innovation that creates value in ways that matter most to our customers, and believe we are at our best when we serve others. There has never been a better opportunity for us to accomplish our mission of &lt;em&gt;empowering every person and every organization on the planet to achieve more&lt;/em&gt; than now, and I look forward to the ways we will partner together to help you achieve more with AI.&lt;a name=\"customerstories\"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;AI Customer Stories from FY25 Q1&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1813700096910640854-accelleron-microsoft-dataverse-discrete-manufacturing-en-switzerland\"&gt;Accelleron&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;Accelleron turbocharges IT support solutions and resolution times with Power Platform&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814827447818396950-agnostic-intelligence-azure-marketplace-other-en-switzerland\"&gt;&lt;strong&gt;Agnostic Intelligence&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Agnostic Intelligence transforms risk management with Azure OpenAI Service, achieving up to 80% time savings&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/how-alaska-airlines-uses-technology-to-ensure-its-passengers-have-a-seamless-journey-from-ticket-purchase-to-baggage-pickup\"&gt;&lt;strong&gt;Alaska Airlines&lt;/strong&gt;&lt;/a&gt;:&lt;em&gt; How Alaska Airlines uses technology to ensure its passengers have a seamless journey from ticket purchase to baggage pickup&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/allgeier\"&gt;&lt;strong&gt;Allgeier&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Allgeier empowers organizations to own and expand data operations&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/anz-launches-first-of-its-kind-ai-immersion-centre-in-partnership-with-microsoft/\"&gt;&lt;strong&gt;ANZ Group&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;ANZ launches first-of-its-kind AI Immersion Centre in partnership with Microsoft&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1794442287816192713-asahi-europe-and-international-microsoft-copilot-for-microsoft-365-consumer-goods-en-czechia\"&gt;&lt;strong&gt;Asahi Europe &amp;amp; International&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Asahi Europe &amp;amp; International charts new paths in employee productivity with Microsoft Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792296600814885165-auburn-microsoft-sentinel-higher-education-en-united-states\"&gt;&lt;strong&gt;Auburn University&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Auburn University empowers thousands of students, faculty and staff to explore new ways of using AI with Microsoft Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1820736454199397990-accenture-onelake-professional-services-en-united-states\"&gt;&lt;strong&gt;Avanade&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Avanade equips 10,000 employees with Microsoft Fabric skills to help customers become AI-driven and future-ready&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1815509048951474334-azerbaijan-airlines-dynamics-365-finance-travel-and-transportation-en-azerbaijan\"&gt;&lt;strong&gt;Azerbaijan Airlines&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Azerbaijan Airlines expands data access to increase efficiency by 70% with Microsoft Dynamics 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1815128464686923048-aztec-group-microsoft-365-copilot-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;Aztec Group&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Aztec Group uses Copilot for Microsoft 365 to enhance the client experience whilst powering efficiencies&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804968308500747501-sultan-microsoft-copilot-health-provider-en-kuwait\"&gt;Bader Sultan&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;Bader Sultan uses Microsoft Copilot to boost productivity and serve clients faster&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804597267941884304-baptistcare-sharepoint-nonprofit-en-australia\"&gt;&lt;strong&gt;BaptistCare&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;BaptistCare supports aging Australians and tackles workforce shortages through Microsoft 365 Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1826019653953914614-maniadechurrasco-azure-synapse-analytics-retailers-en-brazil\"&gt;&lt;strong&gt;Barbeque Mania!&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Barbecue Mania! centralizes your data with Microsoft Azure and saves $3.5 million over 5 years&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1813751805246480555-bmo-azure-banking-and-capital-markets-fr-canada\"&gt;Bank of Montreal&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;Bank of Montreal reduces costs by 30% with Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/source/features/digital-transformation/how-blackrocks-flight-crew-helped-copilot-for-microsoft-365-take-off/\"&gt;&lt;strong&gt;BlackRock&lt;/strong&gt;&lt;/a&gt;:&lt;em&gt; How BlackRock’s ‘flight crew’ helped Copilot for Microsoft 365 take off&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1798374461640442079-capita-group-github-copilot-professional-services-en-united-kingdom\"&gt;Capita&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;Capita uses GitHub Copilot to free developers and deliver faster for customers&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817800430022189544-cassidy-azure-openai-service-other-en-united-states\"&gt;Cassidy&lt;/a&gt;&lt;/strong&gt;: Cassidy and Azure OpenAI Service: Making AI simple for all&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785788806559352474-cdiscount-azure-openai-service-retailers-en-france\"&gt;&lt;strong&gt;Cdiscount&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Cdiscount, Azure OpenAI Service and GitHub Copilot join forces for e-commerce&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/celebal-fabric\"&gt;&lt;strong&gt;Celebal&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Celebal drives custom business transformations with Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792657160796124295-chalhoubgroup-microsoft-fabric-retailers-en-united-arab-emirates\"&gt;&lt;strong&gt;Chalhoub Group&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Chalhoub Group’s People Analytics team speeds reporting with Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790114264617229624-clearbank-azure-api-management-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;ClearBank&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;ClearBank processes 20 million payments a month — up from 8,000 — with platform built on Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/cloud-services\"&gt;&lt;strong&gt;Cloud Services&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Faster with Fabric: Cloud Services breaks new ground with Microsoft&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1769790334604179311-coles-group-azure-machine-learning-retailers-en-australia\"&gt;&lt;strong&gt;Coles Supermarkets&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Coles Supermarkets embraces AI, cloud applications in 500-plus stores with Azure Stack HCI​&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1794733067648840156-commercial-bank-of-dubai-azure-banking-and-capital-markets-en-united-arab-emirates\"&gt;&lt;strong&gt;Commercial Bank of Dubai&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Commercial Bank of Dubai: innovating a future proof banking platform with Microsoft Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1803455715120804571-cpfl-azure-energy-en-brazil\"&gt;&lt;strong&gt;CPFL&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;CPFL expands its data repository by 1500% with Mega Lake project on Microsoft Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817321398362143378-cummins-microsoft-purview-united-states\"&gt;&lt;strong&gt;Cummins&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Cummins uses Microsoft Purview to automate information governance more efficiently in the age of AI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1803548215767581643-dewa-azure-ai-services-government-en-united-arab-emirates\"&gt;&lt;strong&gt;Dubai Electricity and Water Authority (DEWA)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;DEWA pioneers the use of Azure AI Services in delivering utility services&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817686433063439657-digirogaland-azure-national-government-en-norway\"&gt;&lt;strong&gt;Digi Rogaland&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Digi Rogaland prioritizes student safety with Bouvet and Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1802842951607118817-eastman-microsoft-defender-other-en-united-states\"&gt;&lt;strong&gt;Eastman&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Eastman catalyzes cybersecurity defenses with Copilot for Security&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790435165492425096-eon-se-microsoft-copilot-for-microsoft-365-energy-en-germany\"&gt;&lt;strong&gt;E.ON&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;A modern workspace in transition: E.ON relies on generative AI to manage data floods with Copilot for Microsoft 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1795477416065405316-epam-systems-microsoft-copilot-for-microsoft-365-professional-services-en-hungary\"&gt;&lt;strong&gt;EPAM Systems&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Efficiency inside and out: EPAM streamlines communications for teams and clients with Copilot for Microsoft 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/ey-sustainability#:~:text=Put%20simply%2C%20the%20EY%20and%20Microsoft%20collaboration%20operationalizes,advancement%20toward%20environmental%2C%20social%2C%20and%20governance%20%28ESG%29%20goals.\"&gt;&lt;strong&gt;EY&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;EY redefines sustainability performance management with Microsoft&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1816233578469159840-fast-shop-azure-analysis-services-retailers-en-brazil\"&gt;&lt;strong&gt;Fast Shop&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Fast Shop consolidated its data platform on Microsoft Azure and is now ready for the era of AI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/source/features/sustainability/ai-tool-uses-sound-to-pinpoint-leaky-pipes-saving-precious-drinking-water/\"&gt;&lt;strong&gt;FIDO Tech&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;AI tool uses sound to pinpoint leaky pipes, saving precious drinking water&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804528563383903958-florida-crystals-corporation-microsoft-teams-phone-manufacturing-en-united-states\"&gt;&lt;strong&gt;Florida Crystals Corporation&lt;/strong&gt;&lt;/a&gt;:&lt;em&gt; Telecom expenses for Florida Crystals dropped 78% with Teams Phone and Teams Rooms&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1816271784634453515-four-agency-microsoft-365-copilot-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;Four Agency&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Four Agency innovates with Microsoft 365 Copilot to deliver better work faster&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1798075568757336532-fractal-azure-ai-studio-retailers-en-india\"&gt;&lt;strong&gt;Fractal&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Fractal builds innovative retail and consumer goods solutions with Microsoft’s AI offerings including Azure OpenAI Service&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://www.geaerospace.com/news/press-releases/ge-aerospace-launches-company-wide-generative-ai-platform-employees\"&gt;&lt;strong&gt;GE Aerospace&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;GE Aerospace launches company-wide generative AI platform for employees&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1800038623596257192-gatech-azure-ai-studio-higher-education-en-united-states\"&gt;&lt;strong&gt;Georgia Tech Institute for Data Engineering and Science&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Geor&lt;/em&gt;&lt;em&gt;gia Tech is accelerating the future of electric vehicles using Azure OpenAI Service&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1817139019827913537-global-hitachi-solutions-microsoft-fabric-professional-services-en-united-states\"&gt;&lt;strong&gt;Hitachi Solutions&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Hitachi Solutions transforms internal operations with Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/ibm-consulting-fabric\"&gt;&lt;strong&gt;IBM Consulting&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;How IBM Consulting drives AI-powered innovation with Fabric expertise&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-US/case-studies/ilink\"&gt;&lt;strong&gt;iLink Digital&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Transforming user-driven analytics with Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1797709165933196148-insight-canada-microsoft-copilot-for-microsoft-365-other-en-united-states\"&gt;&lt;strong&gt;Insight Enterprises&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Insight Enterprises achieves 93% Microsoft Copilot use rate, streamlining business operations to pave the way for customer success&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814561247353333768-intesa-sanpaolo-group-microsoft-copilot-for-security-banking-and-capital-markets-en-italy\"&gt;&lt;strong&gt;Intesa Sanpaolo&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Intesa Sanpaolo accrues big cybersecurity dividends with Microsoft Sentinel, Copilot for Security&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1784680492304822753-itouch-corporation-microsoft-fabric-professional-services-en-japan\"&gt;&lt;strong&gt;ITOCHU Corporation&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;ITOCHU uses Microsoft Fabric and Azure AI Studio to evolve its data analytics dashboard into a service delivering instant recommendations&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1782343682836979145-iu-internationale-hochschule-gmbh-azure-openai-service-higher-education-en-germany\"&gt;&lt;strong&gt;IU International University of Applied Sciences (IU&lt;/strong&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;IU revolutionizes learning for its students with the AI study buddy Syntea and Azure OpenAI Service&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814930143814549539-john-cockerill-power-apps-energy-en-belgium\"&gt;&lt;strong&gt;John Cockerill&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;John Cockerill engages pro developers to build enterprise-wide apps with Power Platform&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1816212812226771892-kaya-power-bi-professional-services-en-india\"&gt;&lt;strong&gt;Kaya Limited&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Kaya Limited elevates customer experience and operational efficiency with Microsoft Dynamics 365 and Power BI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://partner.microsoft.com/en-us/blog/article/copilot-and-lexisnexis-for-isvs\"&gt;LexisNexis&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;LexisNexis elevates legal work with AI using Copilot for Microsoft 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792260322207475324-lionbridge-technologies-azure-openai-service-other-en-united-states\"&gt;&lt;strong&gt;Lionbridge&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Lionbridge disrupts localization industry using Azure OpenAI Service and reduces turnaround times by up to 30%&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1804624062321190625-lotte-hotels-and-resorts-azure-ai-studio-travel-and-transportation-en-korea\"&gt;&lt;strong&gt;Lotte Hotels &amp;amp; Resorts&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Hotelier becomes a citizen developer, building a smart work culture based on Power Platform and hyper-automated work environment&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/2024/07/24/microsoft-and-lumen-technologies-partner-to-power-the-future-of-ai-and-enable-digital-transformation-to-benefit-hundreds-of-millions-of-customers/\"&gt;&lt;strong&gt;Lumen Technologies&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Microsoft and Lumen Technologies partner to power the future of AI and enable digital transformation to benefit hundreds of millions of customers&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1787232539191932705-ls-electric-microsoft-cloud-for-manufacturing-discrete-manufacturing-en-korea\"&gt;&lt;strong&gt;LS ELECTRIC&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;LS ELECTRIC uses data to optimize power consumption with Sight Machine and Microsoft Cloud for Manufacturing&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1782421038868081701-maire-microsoft-teams-energy-en-italy\"&gt;&lt;strong&gt;MAIRE&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;MAIRE, transforming the energy sector and an entire company culture with Microsoft 365 Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-us/case-studies/mandelbulb-technologies\"&gt;&lt;strong&gt;Mandelbulb Technologies&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Early-adopter Mandelbulb Technologies finds success with Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812248324658189027-mcknight-microsoft-copilot-for-microsoft-365-nonprofit-en-united-states\"&gt;&lt;strong&gt;McKnight Foundation&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;McKnight Foundation accelerates its mission and supports community partners with Microsoft 365 Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1818449762416735302-misoenergy-power-bi-energy-en-united-states\"&gt;&lt;strong&gt;MISO&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;MISO undergoes a digital transformation with Microsoft Industry Solutions Delivery&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1779541850037077027-mhi-azure-discrete-manufacturing-en-japan\"&gt;&lt;strong&gt;Mitsubishi Heavy Industries, Ltd. (MHI)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Recognizing the essence of AI and building the future with clients: MHI’s DI to create proprietary architecture using Azure OpenAI Service&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1814943470387755703-molslinjen-azure-service-fabric-travel-and-transportation-en-denmark\"&gt;&lt;strong&gt;Molslinjen&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Molslinjen develops an AI-powered dynamic pricing strategy with Azure Databricks&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1781804873110601091-national-australia-bank-microsoft-edge-banking-and-capital-markets-en-australia\"&gt;&lt;strong&gt;National Australia Bank&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;National Australia Bank invests in an efficient, cloud-managed future with Windows 11 Enterprise&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1792966154673709027-nagel-group-azure-openai-service-travel-and-transportation-en-germany\"&gt;&lt;strong&gt;Nagel-Group&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Works agreements and contracts: Nagel-Group uses Azure OpenAI Service to help employees find information&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://www.microsoft.com/en-us/dynamics-365/blog/business-leader/2024/08/29/elevating-experiences-with-ai-from-productivity-to-personalization/\"&gt;&lt;strong&gt;NC Fusion&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Elevating experiences with AI, from productivity to personalization&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1800598946211744899-nflpa-azure-ai-services-nonprofit-en-united-states\"&gt;&lt;strong&gt;National Football League Players Association&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;The National Football League Players Association and Xoriant use Azure AI Services to provide protection to players across 32 teams&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://www.prnewswire.com/news-releases/northwestern-medicine-deploys-dax-copilot-embedded-in-epic-within-its-enterprise-to-improve-patient-and-physician-experiences-302222444.html\"&gt;&lt;strong&gt;Northwestern Medicine&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Northwestern Medicine deploys DAX Copilot embedded in Epic within its enterprise to improve patient and physician experiences&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-gb/story/1800238731998879113-oncoclinicas-azure-ai-services-health-provider-en-brazil\"&gt;&lt;strong&gt;Oncoclínicas&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Oncoclínicas creates web portal and mobile app to store clinical and medical procedures with Azure Cognitive Services&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790507377097905834-paconsulting-dynamics-365-sales-professional-services-en-united-kingdom\"&gt;&lt;strong&gt;PA Consulting&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;PA Consulting saves hours a week with Copilot for Microsoft 365 and Copilot for Sales&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1799912172105528685-parexel-azure-data-lake-analytics-health-provider-en-united-states\"&gt;&lt;strong&gt;Parexel&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Parexel speeds operational insights by 70% using Microsoft Azure, accelerating data product delivery and reducing manual work&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1776965075841351020-petrochemical-industries-company-microsoft-365-energy-en-kuwait\"&gt;&lt;strong&gt;Petrochemical Industries Company (PIC)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;From weeks to days, hours to seconds: PIC automates work processes to save time with Microsoft 365 Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1795890438217888078-pkshatech-microsoft-copilot-for-microsoft-365-other-en-japan\"&gt;&lt;strong&gt;PKSHA Technology&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;PKSHA leans on Copilot for Microsoft 365 as part of their team&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://ms-f1-sites-02-we.azurewebsites.net/en-us/story/1797319592906573606-planted-foods-ag-dynamics-365-business-central-other-en-switzerland\"&gt;&lt;strong&gt;Planted&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Planted combines economic growth and environmental sustainability &lt;/em&gt;— &lt;em&gt;with Microsoft Azure OpenAI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1782380069861708732-profisee-azure-application-insights-other-unsegmented-en-united-states\"&gt;&lt;strong&gt;Profisee&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Profisee eliminates data siloes within Microsoft Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1801923187924254612-fundacion-unidos-por-panama-power-automate-health-payor-en-panama\"&gt;&lt;strong&gt;Programa De Atención Domiciliaria&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;The Home Care Program in Panama helped more than 17,000 people with the power of Microsoft Power Automate&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1778147923888814642-pwc-azure-ai-document-intelligence-professional-services-en-united-states\"&gt;&lt;strong&gt;PwC&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;PwC scales GenAI for enterprise with Microsoft Azure AI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1797704796946869974-qnet-microsoft-copilot-for-security-retailers-en-hong-kong-sar\"&gt;&lt;strong&gt;QNET&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;QNET increases security response efficiency 60 percent with Microsoft Security Solutions&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1802830664758543360-rti-international-microsoft-teams-nonprofit-en-united-states\"&gt;&lt;strong&gt;RTI International&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Research nonprofit RTI International improves the human condition with Microsoft 365 Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1788304815155895278-rijksmuseum-dynamics-365-sales-libraries-and-museums-en-netherlands\"&gt;&lt;strong&gt;Rijksmuseum&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Rijksmuseum transforms how art lovers engage with the museum, with Dynamics 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785448033474736158-sandvik-coromant-microsoft-copilot-for-sales-discrete-manufacturing-en-sweden\"&gt;&lt;strong&gt;Sandvik Coromant&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Sandvik Coromant hones sales experience with Microsoft Copilot for Sales&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1813724678565238125-share-market-azure-cosmos-db-banking-and-capital-markets-en-india\"&gt;&lt;strong&gt;Share.Market&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Share.Market redefines the investment experience with Microsoft Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-us/case-studies/simpson-associates\"&gt;&lt;strong&gt;Simpson Associates&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Simpson Associates spurs justice for at-risk communities with Azure AI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1798509188103498351-softchoice-microsoft-copilot-for-microsoft-365-consumer-goods-en-united-states\"&gt;&lt;strong&gt;Softchoice&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Softchoice harnesses Microsoft Copilot and reduces content creation time by up to 70%, accelerating customer AI journeys with its experience&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-us/case-studies/sonata-software\"&gt;&lt;strong&gt;Sonata Software&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Sonata Software goes from early adopter to market leader with Fabric&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1799824484108434730-swiss-azure-travel-and-transportation-en-switzerland\"&gt;&lt;strong&gt;Swiss International Air Lines (SWISS)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;SWISS targets 30% cost savings, increased passenger satisfaction with Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://partner.microsoft.com/en-us/case-studies/symphonyai\"&gt;&lt;strong&gt;SymphonyAI&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;SymphonyAI is solving real problems across industries with Azure AI&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812266855486401339-syndigo-azure-professional-services-en-united-states\"&gt;&lt;strong&gt;Syndigo&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Syndigo accelerates digital commerce for its customers by more than 40% with Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/tal-and-microsoft-join-forces-on-strategic-technology-deal/\"&gt;&lt;strong&gt;TAL&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;TAL and Microsoft join forces on strategic technology deal&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/source/latam/features/ai/tecnologico-de-monterrey-ai-ecosystem/?lang=en\"&gt;&lt;strong&gt;Tecnológico de Monterrey&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Tecnológico de Monterrey university pioneers ambitious AI-powered learning ecosystem&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/en-au/features/telstra-and-microsoft-expand-strategic-partnership-to-power-australias-ai-future/\"&gt;&lt;strong&gt;Telstra&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Telstra and Microsoft expand strategic partnership to power Australia’s AI future&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785425602161769458-university-of-sydney-azure-openai-service-higher-education-en-united-states\"&gt;&lt;strong&gt;The University of Sydney&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;The University of Sydney utilizes the power of Azure OpenAI to allow professors to create their own AI assistants &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1812576965312816472-torfaen-microsoft-copilot-for-microsoft-365-national-government-en-united-kingdom\"&gt;&lt;strong&gt;Torfaen County Borough&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Torfaen County Borough Council streamlines organizational support for Social Care using Copilot for Microsoft 365&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1790119689031635867-trace3-microsoft-365-professional-services-en-united-states\"&gt;&lt;strong&gt;Trace3&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Trace3 expands the realm of clients’ possibilities with Windows 11 Pro and Microsoft Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1805371430718336282-unilever-azure-consumer-goods-en-united-kingdom\"&gt;&lt;strong&gt;Unilever&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Unilever is reinventing the fundamentals of research and development with Azure Quantum Elements&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://news.microsoft.com/2024/07/24/microsoft-collaborates-with-mass-general-brigham-and-university-of-wisconsin-madison-to-further-advance-ai-foundation-models-for-medical-imaging/?msockid=285b61c65a0066cb1d9275135bba6713\"&gt;&lt;strong&gt;University of Wisconsin&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Microsoft collaborates with Mass General Brigham and University of Wisconsin–Madison to further advance AI foundation models for medical imaging&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1801006881087084102-via-azure-data-factory-retailers-en-brazil\"&gt;&lt;strong&gt;Via&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Marketplace, online support, and remote work: Via embraces the digital world supported by Microsoft 365, Dynamics 365 and Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://ukstories.microsoft.com/features/how-virgin-atlantic-is-flying-higher-with-copilot/\"&gt;&lt;strong&gt;Virgin Atlantic&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;How Virgin Atlantic is flying higher with Copilot&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1795836141096013038-virgin-money-dynamics-365-customer-service-banking-and-capital-markets-en-united-kingdom\"&gt;&lt;strong&gt;Virgin Money&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Redi, set, go: Virgin Money delivers exceptional customer experiences with Microsoft Copilot Studio&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1770536569687978092-visier-solutions-azure-openai-service-professional-services-en-canada\"&gt;&lt;strong&gt;Visier&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Visier achieves performance improvements of up to five times using Azure OpenAI Service&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1785340736965832631-w2m-azure-ai-speech-travel-and-transportation-en-spain\"&gt;&lt;strong&gt;World2Meet (W2M)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;World2Meet, the travel company providing a better customer experience and operations with a new virtual assistant powered by Microsoft Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1805346719014513003-xavier-college-dynamics-365-customer-insights-higher-education-en-australia\"&gt;&lt;strong&gt;Xavier College&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;Xavier College begins a process of modernizing its student information systems on Dynamics 365 and AI, unlocking powerful insights&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1787143469739036086-zeiss-azure-machine-learning-discrete-manufacturing-en-germany\"&gt;&lt;strong&gt;ZEISS&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;More time for research: ZEISS supports businesses and researchers with ZEISS arivis Cloud based on Microsoft Azure&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://customers.microsoft.com/en-us/story/1815861561509835507-zf-power-apps-automotive-en-germany\"&gt;&lt;strong&gt;ZF Friedrichshafen AG (ZF Group)&lt;/strong&gt;&lt;/a&gt;: &lt;em&gt;ZF Group builds manufacturing efficiency with over 25,000 apps on Power Platform&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/29/how-copilots-are-helping-customers-and-partners-drive-pragmatic-innovation-to-achieve-business-results-that-matter/\"&gt;How Copilots are helping customers and partners drive pragmatic innovation to achieve business results that matter&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>Microsoft’s 2024 Global Diversity &amp; Inclusion Report: Our most global, transparent report yet</title>\t\t<link>https://blogs.microsoft.com/blog/2024/10/23/microsofts-2024-global-diversity-inclusion-report-our-most-global-transparent-report-yet/</link>\t\t\t\t<dc:creator>Lindsay-Rae McIntyre</dc:creator>\t\t<pubDate>Wed, 23 Oct 2024 15:00:01 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>The Official Microsoft Blog</category>\t\t<category>Diversity and Inclusion Report</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52561931</guid>\t\t\t\t\t<description>&lt;p&gt;Today, I am sharing Microsoft’s 2024 Diversity &amp;#38; Inclusion Report, our most global and transparent report to date. This marks our sixth consecutive annual report and the eleventh year sharing our global workforce data, highlighting our progress and areas of opportunity. Our ongoing focus on diversity and inclusion is directly tied to our inherently inclusive...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/23/microsofts-2024-global-diversity-inclusion-report-our-most-global-transparent-report-yet/\"&gt;Microsoft’s 2024 Global Diversity &amp;#038; Inclusion Report: Our most global, transparent report yet&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;Today, I am sharing Microsoft’s &lt;a href=\"https://aka.ms/DIReport\"&gt;2024 Diversity &amp;amp; Inclusion Report&lt;/a&gt;, our most global and transparent report to date. This marks our sixth consecutive annual report and the eleventh year sharing our global workforce data, highlighting our progress and areas of opportunity.&lt;/p&gt;&lt;p&gt;Our ongoing focus on diversity and inclusion is directly tied to our inherently inclusive mission — to empower every person and every organization on the planet to achieve more, enabling us to innovate in the era of AI. As we approach our company’s 50th anniversary, we remain deeply committed to D&amp;amp;I because it is what creates transformational solutions to the most complex challenges for customers, partners and the world.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Key data&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;We gather a range of data, which is presented in specific ways throughout the report. In the following section, it is important to understand the distinction between our *&lt;strong&gt;Broader Microsoft business &lt;/strong&gt;and our **&lt;strong&gt;Core Microsoft business&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;New and expanded data&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Datacenters: As we lead the AI platform shift, our workforce continues to expand to include employees with varied backgrounds and roles, and we are &lt;a href=\"https://aka.ms/2024DIReport-DataCenters\"&gt;sharing new data&lt;/a&gt; this year on a growing employee population in datacenter roles. The population of datacenter employees grew 23.9% globally and 28.9% in the US in 2024, more than tripling since 2020.&lt;/li&gt;&lt;li&gt;In our most global report to date, we expanded &lt;a href=\"https://aka.ms/2024DIReport-SelfID\"&gt;new global Self-ID data&lt;/a&gt; to include Indigenous and military employees, as well as those with disabilities. For example, 5.7% of global employees in our core Microsoft business self-identified as having a disability, an increase of 0.2 percentage points year over year.&lt;/li&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"5\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"&gt;&lt;span data-contrast=\"auto\"&gt;We continue to have pay equity. For median unadjusted pay analysis, the data shows we have made progress in narrowing the gaps. This year &lt;/span&gt;&lt;a href=\"https://aka.ms/2024DIReport-PayEquity\"&gt;&lt;span data-contrast=\"none\"&gt;&lt;span data-ccp-charstyle=\"Hyperlink\"&gt;we expanded&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; pay equity analysis and median unadjusted pay analysis to not only include women inside and outside the US, but also include a combined view of women globally. Increasing representation for women and racial and ethnic minority groups at more senior levels, combined with maintaining pay equity for all, will continue to reduce the median unadjusted pay gap.&lt;/span&gt;&lt;span data-ccp-props=\"{}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Representation&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=\"https://aka.ms/2024DIReport-Representation\"&gt;Representation of women&lt;/a&gt; in our core Microsoft workforce is 31.6%, an increase of 0.4 percentage points year over year. Additionally, the representation of women in technical roles is 27.2%, an increase of 0.5 percentage points year over year.&lt;/li&gt;&lt;li&gt;Representation of women in our core Microsoft workforce rose year over year at all leadership levels except Executive.&lt;/li&gt;&lt;li&gt;Leadership representation in our core Microsoft workforce of Black and African American employees at the Partner + Executive level grew to 4.3%, an increase of 0.5 percentage points year over year. Leadership representation in our core Microsoft workforce of Hispanic and Latinx employees at the Executive level rose to 4.6%, an increase of 0.8 percentage points year over year.&lt;/li&gt;&lt;li&gt;In our broader Microsoft workforce, representation of racial and ethnic minority groups is 53.9%, an increase of 0.6 percentage points year over year.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=\"margin-top: 0in;\"&gt;&lt;strong&gt;Culture and inclusion in focus&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Employee sentiment and engagement&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Our semi-annual &lt;a href=\"http://aka.ms/2024DIReport-Signals\"&gt;Employee Signals&lt;/a&gt; survey focuses on employee experience and helps us deepen our understanding so we can adjust our efforts where needed. These insights show that employees continue to feel like they are thriving, with a global and US score of 76. Within Employee Signals, we focus on thriving, which we define as “being energized and empowered to do meaningful work.” This is designed to measure employees’ sense of purpose, which is important to personal and professional fulfillment. We survey employees on three dimensions of thriving: Feeling energized, feeling empowered and doing meaningful work.&lt;/li&gt;&lt;li&gt;Our Daily Signals survey results indicate employee perceptions around Microsoft&amp;#8217;s commitment to creating a more diverse and inclusive workplace increased two points year over year to an average score of 79.&lt;/li&gt;&lt;li&gt;Since introducing the concept of allyship to employees in 2018, we have inspired and led a positive impact on our culture. As of June 2024, 95.6% of employees reported some level of awareness of the concept of allyship, up from 65.0% in 2019 when we first started asking employees about their awareness.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;A commitment that spans decades&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Our annual D&amp;amp;I report not only reviews our data, but also illuminates the intentional strategy and actions that have helped us make progress across &lt;a href=\"https://aka.ms/2024DIReport-Timeline\"&gt;our company’s journey&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Examples include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Being one of the first Fortune 500 companies to expand antidiscrimination policy and benefits to LGBTQIA+ employees in 1989.&lt;/li&gt;&lt;li&gt;Announcing our &lt;a href=\"https://aka.ms/racial-equity-initiative\"&gt;Racial Equity Initiative&lt;/a&gt; in June 2020, outlining actions and progress we expect to make by 2025 to help address racial injustice and inequity in the US for Black and African American communities.&lt;/li&gt;&lt;li&gt;Launching immersive D&amp;amp;I learning simulations in 2021, allowing employees to practice crucial D&amp;amp;I skills, such as recognizing and addressing bias, responding to microaggressions and demonstrating effective allyship.&lt;/li&gt;&lt;li&gt;Building on more than a decade of helping to reskill military service members through our Microsoft Software and Systems Academy (MSSA), and this year &lt;a href=\"http://aka.ms/milspouse\"&gt;expanding this skilling opportunity&lt;/a&gt; to train military spouses for portable, in-demand IT roles.&lt;/li&gt;&lt;li&gt;Introducing &lt;a href=\"https://aka.ms/M365PronounsLI\"&gt;pronouns and self-expression features&lt;/a&gt; in Microsoft 365, an innovation brought directly to fruition because we listened to, and collaborated with, customers, partners and employees who asked for these features.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;A mission as bold as ours&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;At Microsoft, we’re guided by our mission, worldview and culture. Our mission is the why; it drives our actions. Our worldview is the what, shaping our strategy and products. Culture is the how, influencing everything with a focus on growth and innovation. Culture is also the who: Who makes up the workforce, who services our customers, who innovates the future of tech. The diversity of the workforce, combined with inclusion, unlocks individual and collective potential. This is what is necessary to stay relevant, compete at scale and win.&lt;/p&gt;&lt;p&gt;Every person. Every organization. Every day. Everywhere.&lt;/p&gt;&lt;p&gt;Here’s to making progress for the next 50 years.&lt;/p&gt;&lt;p&gt;&lt;a href=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Signature-Lindsay-Rae-McIntyre-1.png\"&gt;&lt;img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"69\" class=\"alignnone size-full wp-image-52562153\" src=\"https://blogs.microsoft.com/wp-content/uploads/prod/2024/10/Signature-Lindsay-Rae-McIntyre-1.png\" alt=\"\" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Lindsay-Rae&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;* Broader Microsoft business: Includes the core Microsoft business, plus minimally integrated companies. Employees of joint ventures and newly acquired companies are not included in the data, including Activision, Blizzard, and King. LinkedIn was acquired in December 2016, GitHub was acquired in June 2018, and Activision, Blizzard, and King were acquired in October 2023. We provide standalone data for these three acquisitions. Nuance Communications was acquired in March 2022 and fully integrated in August 2023.&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;**Core Microsoft business: Represents 88.4% of the worldwide broader Microsoft workforce.&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/23/microsofts-2024-global-diversity-inclusion-report-our-most-global-transparent-report-yet/\"&gt;Microsoft’s 2024 Global Diversity &amp;#038; Inclusion Report: Our most global, transparent report yet&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t\t<item>\t\t<title>New autonomous agents scale your team like never before</title>\t\t<link>https://blogs.microsoft.com/blog/2024/10/21/new-autonomous-agents-scale-your-team-like-never-before/</link>\t\t\t\t<dc:creator>Jared Spataro</dc:creator>\t\t<pubDate>Mon, 21 Oct 2024 09:29:41 +0000</pubDate>\t\t\t\t<category>Featured</category>\t\t<category>Recent News</category>\t\t<category>AI</category>\t\t<category>Copilot</category>\t\t<category>Copilot Studio</category>\t\t<category>Dynamics 365</category>\t\t<category>Microsoft 365 Copilot</category>\t\t<category>Microsoft 365 Graph</category>\t\t<category>Microsoft Dataverse</category>\t\t<category>Microsoft Fabric</category>\t\t<guid isPermaLink=\"false\">https://blogs.microsoft.com/?p=52562016</guid>\t\t\t\t\t<description>&lt;p&gt;Already, 60 percent of the Fortune 500 are using Microsoft 365 Copilot to accelerate business results and empower their teams. With Copilot supporting sales associates, Lumen Technologies projects $50 million dollars in savings annually. Honeywell(1) equates productivity gains to adding 187 full-time employees and Finastra is reducing creative production time from seven months to seven...&lt;/p&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/21/new-autonomous-agents-scale-your-team-like-never-before/\"&gt;New autonomous agents scale your team like never before&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</description>\t\t\t\t\t\t\t\t\t\t<ns3:encoded>&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Already, 60 percent of the Fortune 500 are using Microsoft 365 Copilot to accelerate business results and empower their teams. With Copilot supporting sales associates, Lumen Technologies projects $50 million dollars in savings annually. Honeywell(1) equates productivity gains to adding 187 full-time employees and Finastra is reducing creative production time from seven months to seven weeks. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Today, we’re announcing new agentic capabilities that will accelerate these gains and bring AI-first business process to every organization.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"&gt;&lt;span data-contrast=\"auto\"&gt;First, the ability to &lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;create autonomous agents with Copilot Studio &lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt;will be in public preview next month. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"&gt;&lt;span data-contrast=\"auto\"&gt;Second, we’re introducing &lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;ten new autonomous agents in Dynamics 365 &lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt;to build capacity for every sales, service, finance and supply chain team.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span data-contrast=\"none\"&gt;Copilot is &lt;/span&gt;&lt;i&gt;&lt;span data-contrast=\"none\"&gt;your&lt;/span&gt;&lt;/i&gt;&lt;span data-contrast=\"none\"&gt; AI assistant — it works for you — and Copilot Studio enables you to easily create, manage and connect agents to Copilot. Think of &lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"none\"&gt;agents as the new apps for an AI-powered world&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"none\"&gt;. Every organization will have a constellation of agents — ranging from simple prompt-and-response to fully autonomous. They will work on behalf of an individual, team or function to execute and orchestrate businesses process. Copilot is how you’ll interact with these agents,&lt;/span&gt;&lt;span data-contrast=\"auto\"&gt; and they’ll do everything from accelerating lead generation and processing sales orders to automating your supply chain. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Empowering more customers to build autonomous agents in Copilot Studio&lt;/span&gt;&lt;/b&gt;&lt;span data-ccp-props=\"{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Earlier this year, we &lt;/span&gt;&lt;span data-contrast=\"none\"&gt;announced&lt;/span&gt;&lt;span data-contrast=\"auto\"&gt; a host of powerful new capabilities in Copilot Studio,&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;span data-contrast=\"auto\"&gt;including the ability to create autonomous agents. &lt;a href=\"https://aka.ms/CopilotStudioBlog10-21\"&gt;Next month&lt;/a&gt;, these capabilities are shifting from private to public preview, allowing more customers to reimagine critical business processes with AI. &lt;/span&gt;&lt;span data-contrast=\"none\"&gt;Agents draw on the context of your work data in Microsoft 365 Graph, systems of record, Dataverse and Fabric, and can support everything from your IT help desk to employee onboarding and act as a personal concierge for sales and service. &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;Organizations like&lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt; Clifford Chance, McKinsey &amp;amp; Company, Pets at Home and Thomson Reuters &lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt;are already creating autonomous agents to increase revenue, reduce costs and scale impact.&lt;/span&gt; &lt;a href=\"https://aka.ms/AAsdpp3\"&gt;&lt;b&gt;&lt;span data-contrast=\"none\"&gt;Pets at Home&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt;, the U.K.’s leading pet care business, created an agent for its profit protection team to more efficiently compile cases for skilled human review, which could have the potential to drive a seven-figure annual savings. &lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;McKinsey &amp;amp; Company&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt; is creating an agent that will speed up the client onboarding process. The pilot showed lead time could be reduced by 90% and administrative work reduced by 30%. &lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Thomson Reuters&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt; built a professional-grade agent to speed up the legal due diligence workflow, with initial testing showing some tasks could be done in half the time. This agent can help Thomson Reuters increase the efficiency of work for clients and boost its new business pipeline.&lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span data-ccp-props=\"{&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Scaling your teams with 10 new autonomous agents in Dynamics 365 &lt;/span&gt;&lt;/b&gt;&lt;span data-ccp-props=\"{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;New autonomous agents enable customers to move from legacy lines of business applications to AI-first business process. AI is today’s ROI and tomorrow’s competitive edge. These new agents are designed to help every sales, service, finance and supply chain team drive business value — and are just the start. We will create many more agents in the coming year that will give customers the competitive advantage they need to future-proof their organization. Today, we’re introducing ten of these autonomous agents. Here are a few examples:&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"16\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Sales Qualification Agent:&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt; In a profession where time literally equals money, this agent enables sellers to focus their time on the highest priority sales opportunities while the agent researches leads, helps prioritize opportunities and guides customer outreach with personalized emails and responses.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559685&amp;quot;:720,&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"16\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Supplier Communications Agent:&lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt; This agent enables customers to optimize their supply chain and minimize costly disruptions by autonomously tracking supplier performance, detecting delays and responding accordingly — freeing procurement teams from time consuming manual monitoring and firefighting.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559685&amp;quot;:720}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li data-leveltext=\"\" data-font=\"Symbol\" data-listid=\"16\" data-list-defn-props=\"{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1080,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Customer Intent &lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt;and&lt;/span&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt; Customer Knowledge Management&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Agents: &lt;/span&gt;&lt;/b&gt;&lt;span data-contrast=\"auto\"&gt;A business gets one chance to make a first impression, and these two agents are game changers for customer care teams facing high call volumes, talent shortages and heightened customer expectations. These agents work hand in hand with a customer service representative by learning how to resolve customer issues and autonomously adding knowledge-based articles to scale best practices across the care team.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559685&amp;quot;:720}\"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;As agents become more prevalent in the enterprise, customers want to be confident that they have robust data governance and security. The agents coming to Dynamics 365 follow our core security, privacy and responsible AI commitments. Agents built in Copilot Studio &lt;/span&gt;&lt;a href=\"https://www.microsoft.com/en-us/power-platform/blog/power-apps/it-governance-controls-for-your-copilot-agents/?msockid=09cbdd77556e64e60465cefe54d465ae\"&gt;&lt;span data-contrast=\"none\"&gt;include guardrails and controls&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; established by maker-defined instructions, knowledge and actions. The data sources linked to the agent adhere to stringent security measures and controls — all managed in Copilot Studio. These include data loss prevention, robust authentication protocols and more. Once these agents are created, IT administrators can apply a comprehensive set of features to govern their use.&lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span data-contrast=\"auto\"&gt;Microsoft’s own transformation &lt;/span&gt;&lt;/b&gt;&lt;span data-ccp-props=\"{&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;At Microsoft, &lt;/span&gt;&lt;a href=\"https://aka.ms/MSCopilotBusinessValue\"&gt;&lt;span data-contrast=\"none\"&gt;we’re using Copilot and agents&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; to reimagine business process across every function while empowering employees to scale their impact. Using Copilot, one sales team has achieved 9.4% higher revenue per seller and closed 20% more deals(2). And thanks to Copilot, one team is resolving customer cases nearly 12% faster(3). Our Marketing team is seeing a 21.5% increase in conversion rate on Azure.com with a custom agent designed to assist buyers(4). And in Human Resources, our employee self-service agent is helping answer questions with 42% greater accuracy(5). &lt;/span&gt;&lt;span data-ccp-props=\"{&amp;quot;335559739&amp;quot;:0}\"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span data-contrast=\"auto\"&gt;With Copilot and agents, the possibilities are endless — we can’t wait to see what you create. &lt;/span&gt;&lt;a href=\"https://www.microsoft.com/en-us/microsoft-copilot/microsoft-copilot-studio\"&gt;&lt;span data-contrast=\"none\"&gt;Start building&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; agents in Copilot Studio today. Read more about autonomous agent capabilities on the &lt;/span&gt;&lt;a href=\"https://aka.ms/CopilotAndAgentsBlog\"&gt;&lt;span data-contrast=\"none\"&gt;Copilot Studio&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; and &lt;/span&gt;&lt;a href=\"https://aka.ms/D365Goode102124\"&gt;&lt;span data-contrast=\"none\"&gt;Dynamics 365&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; blogs. Head to &lt;/span&gt;&lt;a href=\"https://aka.ms/MSCopilotBusinessValue\"&gt;&lt;span data-contrast=\"none\"&gt;WorkLab&lt;/span&gt;&lt;/a&gt;&lt;span data-contrast=\"auto\"&gt; for more insights on Microsoft’s own AI transformation.&lt;/span&gt;&lt;/p&gt;&lt;div class=\"video-container responsive-youtube oembed-container\"&gt;&lt;p id=\"ariaLabel_675e5e9ac7f17\" class=\"screen-reader-text\"&gt;YouTube Video&lt;/p&gt;&lt;p&gt;&lt;iframe title=\"YouTube Video\" aria-labelledby=ariaLabel_675e5e9ac7f17\" title=\"Reimagine business process with Copilot and agents\" width=\"100%\" height=\"560\" data-src=\"https://www.youtube-nocookie.com/embed/Lw7H4TFX5TM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen&gt;&lt;/iframe&gt;&lt;button class=\"cookie-consent-btn\"&gt;Click here to load media&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=\"video-container responsive-youtube oembed-container\"&gt;&lt;p id=\"ariaLabel_675e5e9ac8007\" class=\"screen-reader-text\"&gt;YouTube Video&lt;/p&gt;&lt;p&gt;&lt;iframe title=\"YouTube Video\" aria-labelledby=ariaLabel_675e5e9ac8007\" title=\"Accelerating work across the UK with Copilot agents\" width=\"100%\" height=\"560\" data-src=\"https://www.youtube-nocookie.com/embed/Iqzqp69QCKI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen&gt;&lt;/iframe&gt;&lt;button class=\"cookie-consent-btn\"&gt;Click here to load media&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;NOTES&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;Statistics are from an internal Honeywell survey of 5,000 employees where 611 employees responded.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Internal Microsoft Sales Team data based on 687 sellers of Microsoft 365 Copilot, Jan. &amp;#8211; June 2024, as compared with sellers with low usage of Copilot. Regular usage of Copilot means sellers who use Copilot daily at least 50% of the time during the testing period.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Internal CSS experiment conducted by Microsoft, 600 participants using Copilot Q&amp;amp;A function, Azure Core team, Nov. &amp;#8211; Dec. 2023. These results are statistically significant at the 95th% confidence interval.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;span data-teams=\"true\"&gt;&lt;span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\" dir=\"ltr\"&gt;&lt;i&gt;Internal Microsoft Marketing team data, June &amp;#8211; Sept. 2024. Conversion means initiating the free account sign-up process on Azure.com.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Internal HR experiment conducted by Microsoft, 33 participants, Oct. 2024. These results are statistically significant at the 95th% confidence interval.&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The post &lt;a href=\"https://blogs.microsoft.com/blog/2024/10/21/new-autonomous-agents-scale-your-team-like-never-before/\"&gt;New autonomous agents scale your team like never before&lt;/a&gt; appeared first on &lt;a href=\"https://blogs.microsoft.com\"&gt;The Official Microsoft Blog&lt;/a&gt;.&lt;/p&gt;</ns3:encoded>\t\t\t\t\t\t\t\t\t\t\t\t</item>\t</channel></rss>"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_serp.html",
    "content": "<!DOCTYPE html><html dir=\"ltr\" lang=\"en\" xml:lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:Web=\"http://schemas.live.com/Web/\"><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\" >//<![CDATA[\nsi_ST=new Date\n//]]></script><head><!--pc--><title>Microsoft wikipedia - Search</title><meta content=\"text/html; charset=utf-8\" http-equiv=\"content-type\" /><meta name=\"referrer\" content=\"origin-when-cross-origin\" /><meta property=\"og:description\" content=\"Intelligent search from Bing makes it easier to quickly find what you’re looking for and rewards you.\" /><meta property=\"og:site_name\" content=\"Bing\" /><meta property=\"og:title\" content=\"Microsoft wikipedia - Bing\" /><meta property=\"og:url\" content=\"https://www.bing.com/search?q=Microsoft+wikipedia&amp;FORM=QBLH\" /><meta property=\"fb:app_id\" content=\"3732605936979161\" /><meta property=\"og:image\" content=\"http://www.bing.com/sa/simg/facebook_sharing_5.png\" /><meta property=\"og:type\" content=\"website\" /><meta property=\"og:image:width\" content=\"600\" /><meta property=\"og:image:height\" content=\"315\" /><link href=\"/search?format=rss&amp;q=Microsoft+wikipedia&amp;FORM=QBLH\" data-orighref=\"\" rel=\"alternate\" title=\"XML\" type=\"text/xml\" /><link href=\"/search?format=rss&amp;q=Microsoft+wikipedia&amp;FORM=QBLH\" data-orighref=\"\" rel=\"alternate\" title=\"RSS\" type=\"application/rss+xml\" /><link href=\"/sa/simg/favicon-trans-bg-blue-mg.ico\" data-orighref=\"/sa/simg/favicon-trans-bg-blue-mg.ico\" rel=\"icon\" /><link href=\"/sa/simg/Roboto_Regular.woff2\" rel=\"preload\" type=\"font/woff2\" as=\"font\" crossorigin=\"anonymous\" /><link href=\"/sa/simg/Roboto_Semibold.woff2\" rel=\"preload\" type=\"font/woff2\" as=\"font\" crossorigin=\"anonymous\" /><link rel=\"preconnect\" href=\"https://r.bing.com\" /><link rel=\"preconnect\" href=\"https://r.bing.com\" crossorigin/><link rel=\"dns-prefetch\" href=\"https://r.bing.com\" /><link rel=\"dns-prefetch\" href=\"https://r.bing.com\" crossorigin/><link rel=\"preconnect\" href=\"https://th.bing.com\" /><link rel=\"preconnect\" href=\"https://th.bing.com\" crossorigin/><link rel=\"dns-prefetch\" href=\"https://th.bing.com\" /><link rel=\"dns-prefetch\" href=\"https://th.bing.com\" crossorigin/><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\n_G={Region:\"US\",Lang:\"en-US\",ST:(typeof si_ST!=='undefined'?si_ST:new Date),Mkt:\"en-US\",RevIpCC:\"us\",RTL:false,Ver:\"11\",IG:\"7DE503E4162940FA9A03BF17C440033D\",EventID:\"65f49102bb34466f9832e650fe2ee6c4\",MN:\"SERP\",V:\"web\",P:\"SERP\",DA:\"MWHE01\",CID:\"15EBBCC39BE7675634A4A8809A5D6617\",SUIH:\"lkC7xeHX3W0MbzYZPa_DtA\",adc:\"b_ad\",EF:{cookss:1,bmcov:1,crossdomainfix:1,bmasynctrigger:1,bmasynctrigger3:1,getslctspt:1,newtabsloppyclick:1,chevroncheckmousemove:1,sharepreview:1,shareoutimage:1,backserpsearch:1,chatskip2content:1},gpUrl:\"\\/fd\\/ls\\/GLinkPing.aspx?\" }; _G.lsUrl=\"/fd/ls/l?IG=\"+_G.IG+\"&CID=\"+_G.CID ;curUrl=\"https:\\/\\/www.bing.com\\/search\";function si_T(a){ if(document.images){_G.GPImg=new Image;_G.GPImg.src=_G.gpUrl+'IG='+_G.IG+'&CID='+_G.CID+'&'+a;}return true;}_G.NTT=\"600000\";_G.CTT=\"3000\";_G.BNFN=\"Default\";_G.LG=\"160\";;\n//]]></script><style type=\"text/css\">#b_header #id_h{content-visibility:hidden}#b_results>.b_ans:not(.b_top):nth-child(n+5) .rqnaContainerwithfeedback #df_listaa{content-visibility:auto;contain-intrinsic-size:648px 205px}#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5)>h2{content-visibility:auto;contain-intrinsic-size:608px 24px}#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .b_caption:not(.b_rich):not(.b_capmedia):not(.b_snippetgobig):not(.rebateContent){content-visibility:auto;contain-intrinsic-size:608px 65px;padding-right:16px;margin-right:-16px;margin-left:-16px;padding-left:16px}#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .b_caption.b_rich .captionMediaCard .wide_wideAlgo{content-visibility:auto;contain-intrinsic-size:370px 120px}#b_results>.b_algo:not(.b_algoBorder):nth-child(n+5) .scs_icn{content-visibility:auto}#b_results>.b_ans:nth-child(n+7) .b_rs:not(.pageRecoContainer){content-visibility:auto;contain-intrinsic-size:608px 296px}#b_results>.b_ans:nth-child(n+7) .b_rs:not(.pageRecoContainer) .b_rsv3{padding-bottom:1px}#b_results>.b_pag{content-visibility:auto;contain-intrinsic-size:628px 45px}#b_footer>#b_footerItems{content-visibility:auto;contain-intrinsic-size:1px 24px}.cnt_vis_hid{content-visibility:hidden}@font-face{font-family:'Roboto Light';src:url(/sa/simg/Roboto_Light.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto';src:url(/sa/simg/Roboto_Regular.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto Semibold';src:url(/sa/simg/Roboto_Semibold.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto';font-weight:200;src:url(/sa/simg/Roboto_Light.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto';font-weight:300;src:url(/sa/simg/Roboto_Light.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto';font-weight:600;src:url(/sa/simg/Roboto_Semibold.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}@font-face{font-family:'Roboto';font-weight:700;src:url(/sa/simg/Roboto_Semibold.woff2) format('woff2');unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+2215}.sw_ddbk:after,.sw_ddw:after,.sw_ddgn:after,.sw_st:after,.sw_sth:after,.sw_ste:after,.sw_st2:after,.sw_plus:after,.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after,.sw_close:after,.sb_pagN:after,.sb_pagP:after,.sw_up:after,.sw_down:after,.b_expandToggle:after,.b_fLogo:after,.b_cm:after,.sw_lpoi:after{position:relative}.sw_ddbk:after,.sw_ddw:after,.sw_ddgn:after,.sw_st:after,.sw_sth:after,.sw_ste:after,.sw_st2:after,.sw_plus:after,.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after,.sw_close:after,.sb_pagN:after,.sb_pagP:after,.sw_up:after,.sw_down:after,.b_expandToggle:after,.b_fLogo:after,.b_cm:after,.sw_lpoi:after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.sw_ddbk,.sw_ddw,.sw_ddgn,.sw_st,.sw_sth,.sw_ste,.sw_st2,.sw_plus,.sw_tpcg,.sw_tpcw,.sb_clrhov,.sb_pagN,.sb_pagP,.sw_up,.sw_down,.b_expandToggle,.b_fLogo,.b_cm,.sw_lpoi,.actExpander span{position:relative;display:inline-block;overflow:hidden;direction:ltr}.sw_ddbk:after,.sw_ddw:after,.sw_ddgn:after,.sw_st:after,.sw_sth:after,.sw_ste:after,.sw_st2:after,.sw_plus:after,.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after,.sb_pagN:after,.sb_pagP:after,.sw_down:after,.b_expandToggle:after,.b_fLogo:after,.b_cm:after,.sw_lpoi:after{display:inline-block;transform:scale(.5)}.sw_up:after{display:inline-block;transform:scale(.5,-.5) translateY(-20px)}.sw_tpcg,.b_expandToggle,.b_fLogo{display:block}.sw_st,.sw_sth,.sw_ste,.sw_st2{height:12px;width:12px}.sw_st:after{transform-origin:-68px -40px}.sw_st2:after{transform-origin:-124px -40px}.sw_sth:after{transform-origin:-152px -40px}.sw_ste:after{transform-origin:-96px -40px}.sw_ddbk,.sw_ddw,.sw_ddgn{height:4px;width:7px}.sw_ddbk:after,.sw_ddw:after{transform-origin:-180px -52px}.sw_ddgn:after{transform-origin:-180px -40px}.sw_tpcg,.sw_tpcw,.sw_tpcbk{height:12px;width:12px}.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after{transform-origin:-218px -40px}.sw_plus{height:8px;width:8px}.sw_plus:after{transform-origin:-198px -40px}.b_expandToggle,.sw_up,.sw_down{height:10px;width:16px}.b_expandToggle:after,.sw_up:after,.sw_down:after{transform-origin:-348px 0}.sw_up:after{transform-origin:-348px 0}.b_icon{width:20px;height:20px;z-index:0}.b_cm{height:10px;width:12px}.b_cm:after{transform-origin:-152px -68px}.sw_lpoi{height:12px;width:8px}.sw_lpoi:after{transform-origin:-48px -40px}z{a:1}z{a:1}html,body #b_results .b_no{background-color:#fff}#b_results>li a{color:#4007a2}#b_results>li a:visited{color:#4007a2}#b_results>li{background-color:#fff}div.b_dropdown .b_selected{background:#e1e0df}#b_tween .b_toggle:hover,#b_tween .ftrH:hover{background:#f2f2f2}.b_scroll{background:#999;border-color:#999}.b_scroll:hover{background:#4d4d4d}.b_dropdown{background-color:#fff;border-color:#e5e5e5}.ctxt,select,input[type=\"text\"]{color:#444;border-color:#ddd}.ccal{border-color:#ddd}.ccal:hover,.ctxt:hover,select:hover,input[type=\"text\"]:hover{box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.ctxt:focus,select:focus,input[type=\"text\"]:focus{color:#444;border-color:#919191;box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.ccal input[type=\"text\"],.ccal input[type=\"text\"]:hover,.ccal input[type=\"text\"]:focus{color:#444}.ccal.ccal_rfs input[type=\"text\"],.ccal.ccal_rfs input[type=\"text\"]:hover,.ccal.ccal_rfs input[type=\"text\"]:focus{color:#666}label{color:#767676}#b_results ::placeholder{color:#767676;opacity:1}#b_results :-ms-input-placeholder{color:#767676}#b_results ::-webkit-input-placeholder{color:#767676}#b_results input[type=\"text\"]:disabled{color:#ccc}a,#b_tween a:visited,#b_results .b_no a{color:#4007a2}a:visited,#b_results>li a:visited{color:#4007a2}.trgr_icon .c_tlbxTrgIcn.sw_css{border-color:#006d21 transparent}.b_posText{color:#006d21}.b_negText{color:#c80000}#b_context .b_entityTitle,#b_results .b_entityTitle{color:#444}#b_context .b_entitySubTitle,#b_results .b_entitySubTitle{color:#767676}body,.b_promoteText,#b_tween a.ftrH:hover,.b_expando,.b_expando h2,.b_active a,.b_active a:visited,.b_active a:hover,#b_results>.b_pag a,#b_results .b_no,#b_content a.cbl:visited,#b_content a.cbl{color:#71777d}#b_tween,#b_tween a.ftrH{color:#70757a}.b_top,.b_top .b_promoteText{color:#444}.b_alert,.b_pAlt{color:#d90026}#b_results .b_alert,#b_results .b_pAlt{color:#d90026}.b_demoteText,.b_secondaryText,.b_attribution,.b_factrow,.b_focusLabel,.b_footnote,.b_ad .b_adlabel,#b_tween .b_dropdown a,.b_expando .b_subModule,.b_expando .b_suppModule,.b_algo .b_vList td{color:#767676}.b_algo .b_factrow{color:#767676}.b_caption,.snippet{color:#71777d}.b_top .b_caption{color:inherit}.ciot{background-color:#000}#b_context .b_subModule,#b_results .b_subModule{border-bottom:1px solid #ececec}#b_results .b_sideBleed:last-child .b_subModule{border-bottom:0}.b_subModule h2{color:#111}.c_tlbx{border-color:#999;background:#fff}.sw_poi{color:#fff}.sw_poia{color:#fff}.b_caption p strong,.b_caption .b_factrow strong,.b_secondaryText strong{color:#767676}.b_belowcaption .b_secondaryText{color:#767676 !important}#b_context .b_ans,#b_context #wpc_ag{background-color:#fff}#b_context .b_posText{color:#006d21}#b_context .b_negText{color:#c80000}#b_context,#b_context #wpc_eif{color:#71777d}#b_context .b_alert{color:#d90026}#b_content .b_lowFocusLink a,#b_context .b_secondaryText,#b_context .b_attribution,#b_context .b_factrow,#b_context .b_footnote,#b_context .b_ad .b_adlabel,.b_expando .b_secondaryText,.b_expando .b_attribution,.b_expando .b_factrow,.b_expando .b_footnote{color:#767676}#b_context .b_footnote a,.b_promtext{color:#111}#b_context .b_pointer.b_mhdr:hover .b_secondaryText{color:#36b}z{a:1}.b_footer{background-color:#f5f5f5}.b_footer,.b_footer a,.b_footer a:visited{color:#666}#b_results>.b_ad a{color:#4007a2}#b_results>.b_ad a:visited{color:#4007a2}#b_context>li.b_ad{color:#71777d;background-color:#fff}#b_context>li.b_ad a{color:#4007a2}#b_context>li.b_ad a:visited{color:#4007a2}.b_ad .b_caption p strong,.b_ad .b_caption .b_ad_description strong,.b_ad .b_caption .b_factrow strong,.b_ad .b_secondaryText strong{color:#767676}cite,#b_results cite.sb_crmb a,#b_results cite a.sb_metalink,#b_results .b_adurl cite a,#bk_wr_container cite a{color:#006d21}#b_context cite,#b_context cite a{color:#006d21}.b_ad cite,.b_ad cite a{color:#006d21}.b_button:hover,.b_button:visited,.b_hlButton,.b_hlButton:hover,.b_hlButton:visited,.b_foregroundText,.ciot{color:#fff}.b_button:hover,.b_hlButton{background-color:#0072c5}.b_button:active,.b_hlButton:active{background-color:#333}.b_hlButton:hover{background-color:#106ebe}.b_border,.b_button,.b_hlButton{border-color:#ccc}#b_results>.b_pag{background-color:transparent}#b_results>.b_pag a:hover{background-color:#f4f4f4}#b_results>.b_pag .sb_pagS_bp:hover{background-color:#fff}#b_results>.b_pag a.sb_pagP:hover,#b_results>.b_pag a.sb_pagN:hover{background-color:inherit}#b_results>.b_pag .sb_pagS_bp{color:#111}.b_pag a{border:3px solid transparent}.b_pag a.sb_bp{border:0;border-bottom:3px solid transparent}.b_pag .sb_pagS{border-color:#00809d}.b_pag a.sb_pagS_bp{border-color:#00809d}z{a:1}z{a:1}#b_results>.b_ad{color:#71777d;background-color:#f9fcf7}#b_results,#b_results .b_defaultText,#b_results>.b_pag a:hover,#b_tween .b_toggle:hover,#b_tween .b_highlighted{color:#71777d}html,body,h1,h2,h3,h4,h5,h6,p,img,ol,ul,li,form,table,tr,th,td{border:0;border-collapse:collapse;border-spacing:0;list-style:none;margin:0;padding:0}html{overflow-y:scroll}#b_content{clear:both;min-height:316px;padding:41px 0 20px var(--lgutter)}#b_pole{margin:-25px 0 15px var(--lgutterrev);padding-left:var(--polepadl)}#b_tween:not(.b_hidetoggletween)~#b_pole{margin-top:3px}.b_underSearchbox~#b_pole{margin-top:0}#b_context{margin:0 0 0 var(--rgutter);padding:0 20px}#b_context .b_ans,#b_context .b_ad{margin:0 -20px}#b_context .b_ans{padding:10px 20px 0}#b_context .b_ad{padding:10px 20px}#b_results,#b_context,#b_tween>span,.b_hList>li,.c_tlbxTrg,.b_hPanel>span,.ccal .ccali,.b_footerRight,.b_hPanel .b_xlText,.b_hPanel .cico,.b_moreLink,.b_label+.b_hList,.lc_bks,.lc_bkl,.fiw,.csrc,.b_algo .b_title H2,.b_algo .b_title>div,.b_algo .b_title .b_suffix>div,h3{display:inline-block}.b_pointer{cursor:pointer}label,.b_ad .b_adlabel,.c_tlbxTrgIcn{display:block}#b_tween{margin-top:-28px}.b_underSearchbox~#b_tween{margin-top:-2px}#b_tween,#b_tween .ftrH{height:30px}#b_tween>span{padding-right:25px}#b_results>li{margin:0 0 4px}#b_results>li,#b_results>.b_ad{padding:10px 20px}#b_results>.b_ans{padding:12px 20px 0}#b_results>.b_algo{padding:12px 20px 0}#b_results>li .b_fullb{margin-left:-20px;margin-right:-20px}#b_results>.b_ad{padding-right:18px;border-right:2px solid #e5e5e5}#b_results>li:first-child{padding-top:10px}#b_results>.b_pag{padding:26px 0 26px 20px}.sb_hbop,.b_hide,.ttl,#sw_tfbb,.sw_next,.sw_prev,#id_d,.b_hidden img{display:none}.b_hidden{visibility:hidden}#b_context .b_ans{margin-bottom:5px}#b_context .b_ad{margin-bottom:5px}main,aside,.b_inlineList li,.b_factrow li{display:inline}.b_footerRight,td,th,#b_context,.b_hList>li{vertical-align:top}.b_footer{width:100%;padding:12px 0}.c_tlbxTrg{width:15px;height:14px;margin:-1px 6px -3px 2px}.c_tlbxTrgIcn{margin:4px 0 2px 3px}.c_tlbx{position:absolute;z-index:6;border:1px solid;padding:10px}.b_gridList ul:first-child,.b_vlist2col ul:first-child{margin:0 20px 0 0}.b_gridList li,.b_vlist2col li{padding:0 0 10px}.b_vlist2col.b_deep li{padding:0 0 10px}.b_overhangR .b_vlist2col ul:first-child{margin:0 15px 0 0}.b_overhangR .b_vlist2col ul{width:180px}.b_deep p{height:33px}#b_context .b_ad .b_adlabel,.sc_rf form,form.sc_rf{margin-bottom:10px}.b_ad li,#b_results .b_ad .b_adlabel{margin-bottom:8px}.b_ad li:last-child{margin-bottom:0}.b_ad li li,.b_ad li li:last-child{margin:0}#b_results .b_ad .b_vlist2col,#b_results .b_ad .b_factrow,#b_results .b_ad .b_bcfactrow{margin-top:-6px}#b_results .b_ad .sb_adRA .b_vlist2col{padding-left:0}.sx_ci{border:1px solid #e5e5e5;margin-top:3px;width:80px;height:60px}.b_favicon{margin:0 .5em 0 0}.b_imagePair:after,.b_vlist2col:after,.b_gridList:after{clear:left}.b_imagePair.reverse:after,.b_overhangR:after{clear:right}.b_clear,#b_results>li:after,.b_clearfix:after{clear:both}#b_results>li:after,.b_clearfix:after,.b_imagePair:after,.b_vlist2col:after,.b_gridList:after,.b_overhangR:after{content:'.';display:block;height:0;visibility:hidden}.b_vlist2col ul,.b_gridList ul,.b_float,.b_footer,.b_float_img,.b_pag li,.b_mhdr h2{float:left}.b_floatR_img,.b_floatR,.wr_tc{float:right}.b_overflow,.b_hList li,.b_1linetrunc,.b_deep p{overflow:hidden}.b_creditedImg img,.b_creditedImg .cico{padding-bottom:1px}h4,.sa_uc>.b_vList>li>table td,.b_smBottom,#b_context .b_ad h2,.b_attribution,.b_focusTextExtraSmall,.b_snippet{padding-bottom:2px}.b_focusLabel,.b_secondaryFocus,.b_focusTextLarge,.b_focusTextMedium,.b_focusTextSmall{padding-bottom:4px}.b_factrow{padding-bottom:2px}h2,label{padding-bottom:3px}.b_vPanel .b_vPanel>div,.b_vList .b_vPanel>div{padding-bottom:5px}.b_dataList li,.b_mBottom{padding-bottom:5px}.b_lBottom,.b_entitySubTitle{padding-bottom:12px}#b_context .b_subModule h2,#b_results .b_subModule h2{padding-bottom:16px}#b_results #sp_recourse.b_lBottom,.b_caption,.b_moreLink,.b_footnote,.b_hList>li,#b_context h2,#b_context h2.b_entityTitle,#b_results .b_ad .b_factrow,#b_results .b_ad .b_bcfactrow,.b_expando h2,.b_no h1,.b_no h4,.b_no li,.b_prominentFocusLabel,.b_locStr{padding-bottom:10px}.b_vPanel>div,.b_vList>li{padding-bottom:10px}.b_vList .b_hList>li,.b_vPanel .b_hList>li,.b_vList .b_float_img,.b_creditedImg .b_footnote,.b_creditedImg .cico img,#b_results>.b_ad,.b_suppModule .b_mhdr,.b_vList>li>.tab-container,.b_vPanel>div>.tab-container,.b_ad .b_deep h3,#b_content .b_float_img_nbp{padding-bottom:0}.b_caption .b_factrow:last-child,#b_results .b_caption .b_factrow:last-child,.b_caption>.b_dataList:last-child li:last-child,.b_caption .b_moreLink:last-child,.b_vList .b_moreLink:last-child,.b_vList .b_factrow:last-child,.b_vPanel .b_factrow:last-child,.b_caption .b_attribution:last-child,.b_vList .b_attribution:last-child,.b_hList .b_attribution:last-child,.b_vPanel .b_attribution:last-child,.b_vList>li>table:last-child tr:last-child td,.b_vPanel>div>table:last-child tr:last-child td,.b_vList .b_focusLabel:last-child,.b_vPanel .b_focusLabel:last-child,.b_vList .b_secondaryFocus:last-child,.b_vPanel .b_secondaryFocus:last-child,.b_vList .b_focusTextExtraSmall:last-child,.b_vPanel .b_focusTextExtraSmall:last-child,.b_vList .b_focusTextSmall:last-child,.b_vPanel .b_focusTextSmall:last-child,.b_vList .b_focusTextMedium:last-child,.b_vPanel .b_focusTextMedium:last-child,.b_vList .b_focusTextLarge:last-child,.b_vPanel .b_focusTextLarge:last-child,.b_vList h4:last-child,.b_vPanel h4:last-child,.b_vPanel .b_caption:last-child,.b_vPanel .b_vList:last-child>li:last-child,.b_vPanel .b_footnote:last-child{padding-bottom:0}.b_vList .b_vPanel,.b_vPanel .b_vPanel{margin-bottom:-5px}.b_hList .b_vPanel{margin-bottom:-10px}.b_mBMargin{margin-bottom:5px}#b_results .b_no{margin:0 0 80px}.b_rich{padding-top:3px}h2+.b_rich,.btitle+.b_rich{padding-top:2px}.b_algo .b_attribution img{vertical-align:text-bottom}.b_lLeft,.b_floatR_img,.b_suffix{padding-left:10px}.wr_tc,.b_xlLeft,.b_deep,#b_results .b_ad .b_vlist2col,#b_tween{padding-left:20px}h2 .b_secondaryText{margin-left:5px}.b_hList.b_imgStrip>li{padding-right:1px}.fiw,.lc_bkl,.b_mRight,.b_label,.csrc{padding-right:4px}.b_lRight,.b_imgStrip .imgData,.b_underSearchbox .b_label{padding-right:10px}.b_hPanel>span,.b_hList>li{padding-right:10px}.b_xlRight{padding-right:20px}.b_hList.b_imgStrip>li:last-child,.b_hList>li:last-child,.b_hPanel>span:last-child,td:last-child,th:last-child,#b_tween>span:last-child{padding-right:0}.b_overhangR{margin-right:-30px;padding-right:150px}.wr_tc{margin-right:-150px}.b_tbl{margin-right:-10px}.b_border,.b_button,.b_hlButton,.b_scroll,.b_dropdown{border-width:1px;border-style:solid}.b_button,.b_hlButton{line-height:30px;text-decoration:none;text-align:center;cursor:pointer;padding:0 15px;min-width:50px}.lc_bks .cbtn{margin-top:15px}#b_context .b_subModule,#b_results .b_subModule,.b_expando .b_subModule{padding:0 19px 0 19px;margin-bottom:16px}#b_context .b_subModule .b_lBottom.lo_im_ov{padding-bottom:0;margin-bottom:12px}#b_results .b_sideBleed:last-child .b_subModule{margin-bottom:0}.b_dropdown{position:absolute;z-index:6}.b_scroll{position:relative;top:0;width:5px;height:20px}.b_mhdr{margin:-15px 0 -5px;padding:15px 0 5px}.b_mhdr .sw_up,.b_mhdr .sw_down{margin-top:10px}.b_mhdr .b_moreLink,.b_mhdr .b_secondaryText{margin-top:6px}.b_vPanel .sc_rf form,.b_suppModule .b_mhdr{margin-bottom:0}.b_rTxt{text-align:right}.b_cTxt{text-align:center}table{width:100%;word-wrap:break-word}td,th,.b_float_img{padding:0 10px 10px 0}th{text-align:left}.sw_poi,.sw_poia{float:left;margin:-3px 5px 0 0;line-height:20px;text-align:center}.ctxt,select,input[type=\"text\"]{outline:none;padding:0 11px;height:30px;border-width:1px;border-style:solid;border-radius:2px}.ctxt.b_focusTextMedium{padding:3px 11px 8px 11px;height:57px}.ctxt.b_outTextBox{border-top:4px solid #919191;padding:0 11px 8px 11px}.ctxt.b_outTextBox:focus{border-top-width:1px;padding-top:3px}select{padding:0 0 0 11px;height:32px}input.ctxt,.ccal input,.ccal .ccali,.b_favicon,.b_footnote .cico{vertical-align:middle}.ccal .ctxt,.ccal .ctxt:hover,.ccal .ctxt:focus,.ccal .ccali{background:none;border:none;box-shadow:none;-webkit-box-shadow:none}.ccal{border-width:1px;border-style:solid}.ccal .ccali{height:30px}.ccal .ccalp{padding:5px 5px 0 5px}.b_underSearchbox{margin:-20px 20px 14px}.b_underSearchbox .b_hList>li{padding:0 8px 0 0}.b_compactSearch label{float:left;margin:7px 10px 0 0}.b_compactSearch input{margin-right:0;float:left}.b_compactSearch .cbtn{border-left:0}.b_footer table{width:520px;margin:15px 20px 0 120px}#b_footerItems ul{display:block}#b_footerItems li{display:inline;float:left}#b_footerItems span{margin-right:24px;margin-left:48px;float:right}#b_footerItems a{margin-right:48px}#b_footerItems{height:24px;line-height:24px;padding:0 20px 0 120px}.b_footerRight{margin:13px 0 0 50px}.b_1linetrunc{text-overflow:ellipsis;white-space:nowrap}div.cico.b_capImg{margin-bottom:4px}#b_context .b_entitySubTitle,#b_results .b_entityTP .b_entitySubTitle{margin-top:-9px}.b_entityTP .b_infocardTopR .b_floatR_img,.b_tinyInfocard .b_floatR_img,.b_smallInfoFacts .sml{padding-bottom:10px}.b_vmparent{display:-ms-flexbox;display:-webkit-flex;display:flexbox;display:-webkit-box;display:flex;align-items:center}.b_relative{position:relative}.bdzoom115{zoom:1.15;-ms-zoom:1.15}.bdzoom110{zoom:1.1;-ms-zoom:1.1}.bdzoom105{zoom:1.05;-ms-zoom:1.05}.bdzoom95{zoom:.95;-ms-zoom:.95}:root{--lgutter:160px;--lgutterrev:-160px;--polepadl:180px;--polepadl2:120px;--dtabpadl:170px;--rgutter:80px;--crleft:888px;--bminwidth:1320px}z{a:1}input,textarea,h4,h5{font:inherit;font-size:100%}body,.b_no h4,h2 .b_secondaryText,h2 .b_alert,.b_underSearchbox,#b_header{font:14px/normal 'Roboto',Helvetica,Sans-Serif}h1,h2,h3{font:13px/1.2em 'Roboto',Sans-Serif}h2{font-size:20px;line-height:28px}.sb_add h2{line-height:28px}h3,.b_no h1{font-size:18px;line-height:22px}cite{font-style:normal}.sb_alert a{font-style:italic}#b_content,#b_context,.b_expando{line-height:1.2em}cite,#b_context,.b_expando,#vidans2{word-wrap:break-word}#sa_ul li,.nowrap{white-space:nowrap}.b_footer{line-height:18px}.b_attribution,#b_content .b_attribution{font-size:16px;line-height:24px}#b_content main #b_results .b_algo cite{font-size:14px}.ba_title>h2+cite{font-size:16px;line-height:24px;padding-top:1px}.b_subModule h2{font-size:18px;line-height:22px}.b_smText,.b_footnote,.ciot{font-family:'Roboto',Helvetica,Sans-Serif;font-size:11px;line-height:normal}.b_footnote{line-height:16px}.b_ad .b_adlabel,.b_ad .b_adlabel strong{font:12px/normal 'Roboto',Helvetica,Sans-Serif}.b_mText{font:16px/22px 'Roboto',Helvetica,Sans-Serif}.b_focusLabel{font:16px 'Roboto',Sans-Serif;line-height:20px}.b_secondaryFocus{font:13px 'Roboto',Helvetica,Sans-Serif;line-height:18px}.b_focusTextExtraSmall{font:18px 'Roboto',Sans-Serif;line-height:1.3em}h2.b_entityTitle,.b_prominentFocusLabel,.b_xlText{font-size:24px;font-family:'Roboto',Sans-Serif;line-height:1.2em}h2.b_entityTitle{line-height:normal}.b_entitySubTitle{font-size:13px;line-height:18px}.b_focusTextSmall,.b_focusTextMedium,.b_focusTextLarge{font:400 28px 'Roboto',Sans-Serif}.b_focusTextMedium{font-size:40px;line-height:48px}.b_focusTextLarge{font-size:54px;line-height:64px}.b_focusTextSmall{font-size:28px;line-height:38px}h2.b_topTitle{font-size:20px;line-height:28px}.sb_add h2.b_topTitle{line-height:28px}strong,.b_active a,.b_no h4,.b_strong,.b_ad .b_adlabel strong,.cbl{font-weight:700}th,h2 strong,h3 strong{font-weight:normal}#b_tween{font-size:14px}#b_tween>span,#b_tween .ftrH{line-height:30px}.b_attribution cite{unicode-bidi:normal}a,.b_algoheader a:hover,.b_topbar a:hover,.b_pag a:hover,.cbtn:hover,.cbtn a:hover,.b_hlButton:hover,.ftrB a:hover,.b_algo:hover .b_vList h2 a,.b_algo:first-child:hover .b_vList h2 a,#b_header:hover~#b_content #b_pole~#b_results li:first-child.b_ad li:first-child h2 a,#b_header:hover~#b_content #b_pole~#b_results li:first-child.b_algo h2 a,#b_results>.b_ans:hover .ent_cnt h2>a,#b_results>.b_ans:hover #sp_requery h2>a,#b_results>.b_ans .b_rich>.b_vList>li:hover h5.b_lBMargin>a{text-decoration:none}a:hover,.b_algoheader a h2:hover,.b_algo:first-child:hover h2 a,.b_algo .b_underline a,.sb_add .b_underline a,#b_results>.b_ad li:first-child .sb_adTA:hover h2 a,#b_header:hover~#b_content #b_results li:first-child.b_ad li:first-child div.sb_adTA h2 a,#b_header:hover~#b_content #b_results li:first-child.b_algo h2 a{text-decoration:underline}z{a:1}z{a:1}#b_results>li.b_ans.b_topborder{padding:15px 19px 10px 19px;margin-bottom:12px;border-radius:6px;margin-top:0}#b_results>li.b_ans.b_topborder .bgtopgr{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#b_results>li.b_ans.b_topborder .bgtopwh{border-radius:6px 6px 0 0}#b_results li.b_ans~.b_topborder{margin-top:10px}#b_results li.b_ad~.b_ans.b_topborder{margin-top:12px}#b_results>li.b_ans.b_topborder.b_tophb{border:1px solid #ddd;box-shadow:none;padding:0}#b_results>li.b_ans.b_topborder,#b_results>li.b_ans.b_topborder.b_tophb.b_topshad{box-shadow:0 0 0 1px rgba(0,0,0,.05);border:none}.b_tophb .b_tophbh{padding:15px 19px 16px 19px}.b_tophb .b_tophbb{border-top:1px solid #ddd;padding:15px 19px 19px 19px}.b_topshad .b_tophbb{padding-bottom:10px}.b_tophb .b_tophbb.bgbtopnone{border-top:none}.b_tophb .bgtopwh{background-color:#fff}.b_tophb .bgtopgr{background-color:#f5f5f5}#b_results>.b_ad+.b_top{margin-top:0}.b_top .b_attribution+.b_rich,.b_top .b_factrow+.b_rich{padding-top:8px}.b_top .b_topTitle+.b_rich{padding-top:12px}.b_tHeader,.b_demoteText,.b_secondaryText,.b_attribution,.b_factrow,.b_focusLabel,.b_footnote,.b_ad .b_adlabel,#b_tween .b_dropdown a,.b_expando .b_subModule,.b_expando .b_suppModule,.b_algo .b_vList td,#b_content .b_lowFocusLink a,#b_context .b_secondaryText,#b_context .b_attribution,#b_context .b_factrow,#b_context .b_footnote,#b_context .b_ad .b_adlabel,.b_expando .b_secondaryText,.b_expando .b_attribution,.b_expando .b_factrow,.b_expando .b_footnote{color:#767676}.b_ad .b_secondaryText{color:#767676}#b_context .b_mhdr:hover .b_secondaryText,.b_expando .b_mhdr:hover .b_secondaryText{color:#001ba0}#b_results>.b_top .b_prominentFocusLabel,#b_results>.b_top .b_topTitle,#b_results>.b_top .b_focusTextExtraSmall,#b_results>.b_top .b_focusTextExtraSmall a,#b_results>.b_top .b_focusTextSmall,#b_results>.b_top .b_focusTextSmall a,#b_results>.b_top .b_focusTextMedium,#b_results>.b_top .b_focusTextMedium a,#b_results>.b_top .b_focusTextLarge,#b_results>.b_top .b_focusTextLarge a{color:#111}span.b_negText.b_focusTextExtraSmall{color:#c80000 !important}span.b_posText.b_focusTextExtraSmall{color:#006d21 !important}.b_top .b_focusTextExtraSmall a,.b_top .b_focusTextSmall a,.b_top .b_focusTextMedium a,.b_top .b_focusTextLarge a{text-decoration:none}#b_results>.b_top:hover .b_focusTextExtraSmall a,#b_results>.b_top:hover .b_focusTextSmall a,#b_results>.b_top:hover .b_focusTextMedium a,#b_results>.b_top:hover .b_focusTextLarge a{color:#001ba0}#b_results>.b_top .b_focusTextExtraSmall a:hover,#b_results>.b_top .b_focusTextSmall a:hover,#b_results>.b_top .b_focusTextMedium a:hover,#b_results>.b_top .b_focusTextLarge a:hover{text-decoration:underline}.fc_cal_holder table{font-size:11px}body .fc_cal_holder{border:1px solid #0072c5}body .fc_cal_holder .fc_cal_disabled{color:#767676}body .fc_cal_holder a:link,body .fc_cal_holder a:visited{color:#666}body .fc_cal_holder td,body .fc_cal_holder .fc_cal_disabled,body .fc_cal_holder .fc_cal_days td{width:20px;line-height:20px;padding:0 10px 10px 0}.fc_cal_holder tr td:first-child{padding-left:10px}.fc_cal_holder tr:last-child td{padding-bottom:15px}body .fc_cal_holder .fc_cal_days td{line-height:15px;color:#767676;background-color:#fff}body .fc_cal_holder a{padding:0}body .fc_cal_holder td a:hover,body .fc_cal_holder td a:active,body .fc_cal_holder td.fc_cal_current a:hover,body .fc_cal_holder td.fc_cal_current a:active{background-color:#eee;color:#666}body .fc_cal_holder .fc_cal_monthHolder+.fc_cal_monthHolder{border-left:1px solid #bfdcf0}body .fc_cal_holder .fc_cal_monthHolder{background-color:#fff;border:0;padding:15px 15px 10em 15px}body .fc_cal_holder th div{background-color:#fff;border:0;padding:0 0 15px;color:#666;text-align:center;font-size:13px}body .fc_cal_holder .fc_cal_current a{background-color:#001ba0}body .fc_cal_monthDec.fc_cal_monthChange,body .fc_cal_monthInc.fc_cal_monthChange{background:url(rms://rms:answers:SharedStaticAssets:navchevrons_topRefresh) no-repeat;width:8px;height:12px;background-position:0 -110px;font-size:0}body .fc_cal_monthDec.fc_cal_monthChange{background-position:0 -44px}body .fc_cal_holder .fc_cal_month_first .fc_cal_monthDec{margin:1px 0 0 15px}body .fc_cal_holder .fc_cal_month_last .fc_cal_monthInc{margin:1px 15px 0 0}#b_results .b_attribution,#b_context .b_attribution{line-height:22px}.b_deep,#b_results .b_caption,#b_results .b_snippet,#b_results .b_factrow,#b_results p,#b_context .b_caption,#b_context .b_snippet,#b_context .b_factrow,#b_context p,#snct{line-height:22px}#b_context .b_caption .b_factrow .csrc{line-height:19px}#b_content .b_deep p{height:44px}#b_content .carousel p,#b_content .b_slideexp p,#b_content #lMapContainer p,#b_content .MicrosoftMap p,#b_content .rwrl p,#b_content .qna_body p,#bw-rqna p,#ecmp_relatedPh p,#na_cl p{line-height:inherit}#b_content .b_imgSetData p,#b_content .b_caption .b_slideexp p{line-height:18px}#b_results #lgb_info .b_factrow{padding-bottom:4px}#snct .imgbig .b_overflow>h4{line-height:normal}#b_results .b_attribution,.b_ad h2,.b_deep h3,#snct h4{padding-bottom:0}#b_results .b_attribution .cico{border-radius:0}#b_results .b_algo .b_attribution,#b_results .sb_add .b_attribution{padding:1px 0 0 0}.b_deep h3{line-height:1.2em}#b_results .b_factrow{padding-bottom:2px}.b_ans h2.b_topTitle.b_headerTitle{padding-bottom:3px}.b_ans h2.b_lBottom{padding-bottom:10px}.b_expando h2{padding-bottom:10px}.b_ans h2,.b_algo h2{padding-bottom:0}z{a:1}.b_ad li,#b_context>.b_ad>ul>li,#b_dynRail>.b_ad>ul>li{margin-bottom:22px}#b_context .b_ad .b_caption{padding-bottom:4px}#b_content ol#b_results li.b_ad{padding-bottom:10px;margin-bottom:0}#b_results li.b_ad.b_adBottom{padding-top:11px}#b_context .b_entityTP{padding:9px 19px 4px 19px;margin:-10px -20px -6px -20px;width:100%;box-shadow:0 0 0 1px rgba(0,0,0,.05);border-radius:6px;background:#fff}#b_context .b_entityTP .irp{border-radius:6px 6px 0 0;overflow:hidden}#b_context .b_ans:not(:first-child)>.b_entityTP{margin-top:-16px}#b_context .b_ad:not(:last-child){padding-bottom:15px;border-bottom:1px solid #ebebeb}.b_dark #b_context .b_ad:not(:last-child){padding-bottom:15px;border-bottom:1px solid #545250}#b_context .b_ans:not(:last-child){padding-bottom:5px}#b_context .b_ans .b_entityTP{margin-bottom:20px}#b_content .b_algo .b_attribution cite strong{font-weight:normal}z{a:1}a:hover,#b_results>li a:hover,#b_results>.b_ad a:hover,#b_context>li.b_ad a:hover{color:#8e24aa}.b_dark a:hover,.b_dark #b_results>li a:hover,.b_dark #b_results>.b_ad a:hover,.b_dark #b_context>li.b_ad a:hover{color:#9ea2ff}.b_scopebar li:hover:not(.b_active){border-bottom:3px solid #ccc}#b_header .scopebar_pipe{border-bottom:none}#b_header .b_scopebar li.b_nohov:hover{border-bottom:none}#b_results .b_lineclamp1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}#b_results .b_lineclamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}#b_results .b_lineclamp3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}#b_results .b_lineclamp4{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}#b_results .b_lineclamp5{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}z{a:1}z{a:1}#qs_searchBox{background-color:#fff;color:#444;text-align:center;display:flex;align-items:center;height:40px;max-width:300px;position:absolute;border-radius:20px;border:none;outline:0;text-decoration:none;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.1);margin-top:8px;display:none;cursor:pointer;font-weight:600;z-index:30009}#qs_searchBox:hover{box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.14)}#qs_selectedText{order:2;margin:auto 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:258px}#qs_searchIconOuter{width:18px;height:18px;order:1;margin-left:12px;margin-right:0}#qs_searchIconInner{display:inline-flex;width:45px;height:45px;background-repeat:no-repeat;transform-origin:top right;transform:translate(-2px,-2px)}#qs_copyBox,#qs_chatBox{text-align:center;display:flex;align-items:center;height:40px;max-width:300px;position:absolute;border:none;outline:0;text-decoration:none;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.1);margin-top:8px;margin-left:8px;display:none;cursor:pointer;z-index:30009}#qs_copyBox:hover,#qs_chatBox:hover{box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.14)}#qs_copyIconOuter,#qs_chatIconOuter{width:18px;height:18px;margin:auto 12px}#qs_chatBox{background-color:none;background-image:linear-gradient(to right,#2870ea,#1b4aef);border-radius:20px}#qs_chatIconInner{display:inline-flex;width:24px;height:24px;transform:translate(-2px,-4px)}#qs_copyBox{background-color:#fff;color:#444;border-radius:6px}#qs_copyText{padding-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:258px}#qs_copyIconInner{display:inline-flex;width:45px;height:45px;transform:scale(.4) translate(-66px,-3px);transform-origin:top right}#qs_mapBox{background-color:#fff;color:#444;text-align:center;padding:12px 12px 0 12px;max-width:300px;position:absolute;height:28px;border-radius:6px;border:none;outline:0;text-decoration:none;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.1);margin-top:8px;margin-left:8px;display:none;cursor:pointer;z-index:30009}#qs_mapBox:hover{box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.14)}#qs_mapText{padding-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:258px}#qs_mapIconOuter{width:18px;height:18px}#qs_mapIconInner{display:inline-flex;width:48px;height:48px;transform:scale(.4) translate(-72px,-3px);transform-origin:top right}#qs_searchIconInner{background-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M10%202.75C14.0041%202.75%2017.25%205.99594%2017.25%2010C17.25%2011.7319%2016.6427%2013.3219%2015.6295%2014.5688L20.5303%2019.4697C20.8232%2019.7626%2020.8232%2020.2374%2020.5303%2020.5303C20.2641%2020.7966%2019.8474%2020.8208%2019.5538%2020.6029L19.4697%2020.5303L14.5688%2015.6295C13.3219%2016.6427%2011.7319%2017.25%2010%2017.25C5.99594%2017.25%202.75%2014.0041%202.75%2010C2.75%205.99594%205.99594%202.75%2010%202.75ZM10%204.25C6.82436%204.25%204.25%206.82436%204.25%2010C4.25%2013.1756%206.82436%2015.75%2010%2015.75C13.1756%2015.75%2015.75%2013.1756%2015.75%2010C15.75%206.82436%2013.1756%204.25%2010%204.25Z%22%20fill%3D%22%23174AE4%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)}.b_dark #qs_searchIconInner{background-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%20%20%20%20%3Cpath%20d%3D%22M10%202.75C14.0041%202.75%2017.25%205.99594%2017.25%2010C17.25%2011.7319%2016.6427%2013.3219%2015.6295%2014.5688L20.5303%2019.4697C20.8232%2019.7626%2020.8232%2020.2374%2020.5303%2020.5303C20.2641%2020.7966%2019.8474%2020.8208%2019.5538%2020.6029L19.4697%2020.5303L14.5688%2015.6295C13.3219%2016.6427%2011.7319%2017.25%2010%2017.25C5.99594%2017.25%202.75%2014.0041%202.75%2010C2.75%205.99594%205.99594%202.75%2010%202.75ZM10%204.25C6.82436%204.25%204.25%206.82436%204.25%2010C4.25%2013.1756%206.82436%2015.75%2010%2015.75C13.1756%2015.75%2015.75%2013.1756%2015.75%2010C15.75%206.82436%2013.1756%204.25%2010%204.25Z%22%20fill%3D%22%23A2B7F4%22%20%2F%3E%0D%0A%3C%2Fsvg%3E)}#qs_chatIconInner{background-image:url(/rp/h3Ueufj9JSjh37HfPlWZlGd5qzs.svg)}#qs_copyIconInner{background-image:url(/rp/Om7UMSlV70RivPZPDFNo-QYcRsc.png)}#qs_mapIconInner{background-image:url(/rp/PoyOAiBkKelhSYdnJauQl8gP6Sw.png)}.sw_close{display:inline-block;position:relative;overflow:hidden;direction:ltr;height:12px;width:12px}.sw_close:after{display:inline-block;transform:scale(.5);transform-origin:-218px -40px}.sw_meIc,.sw_spd,.idp_ham,.idp_wlid{position:relative;overflow:hidden;direction:ltr}.sw_meIc:after,.idp_ham:after,.idp_wlid:after{position:relative;transform:scale(.5);display:inline-block}.idp_ham{height:14px;width:20px;vertical-align:top;top:17px}.idp_ham:focus{outline-style:solid;outline-offset:5px}.idp_ham:after{transform-origin:-274px -40px}.idp_ham:hover:after,.idp_ham:active:after,.idp_ham:focus:after{transform-origin:-318px -40px}.idp_wlid,.sw_meIc{height:18px;width:18px}.idp_wlid:after{transform-origin:-48px 0}.rh_reedm .sw_meIc:after{transform-origin:-94px 0}.sw_meIc:after{transform-origin:-58px 0}.sw_spd:after{transform-origin:-362px -28px}.sw_meIc:after,.idp_ham:after,.idp_wlid:after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.b_searchboxForm,.sa_as .sa_drw{background-color:#fff}.b_searchboxForm .b_searchboxSubmit{background-color:#fff;border-color:#fff}.b_scopebar,.b_scopebar a,.b_scopebar a:visited,.id_button,.id_button:visited{color:#444}.b_scopebar .b_active a,.b_scopebar a:hover,.id_button:hover{color:#444}.b_idOpen a#id_l,a#id_rh.openfo{color:#333}#bepfo,#id_d{color:#333;background-color:#fff}.wpc_bub a{color:#4007a2}#sw_as{color:#444}.sa_tm strong{color:inherit}.sa_hv{background:#ececec}.sa_hd{color:inherit}#b_header{padding:18px 0 0 0;background-color:#fff;background:#fff}#b_header #sb_form,.b_logoArea,.b_logo,.b_searchboxForm,.id_button,.id_avatar,.idp_ham,.b_scopebar li,.b_scopebar a{display:inline-block}#b_header #sb_form{margin-right:10px}.b_searchbox{width:490px;margin:1px 0 1px 1px;padding:0 10px 0 19px;border:0;max-height:none;outline:none;box-sizing:border-box;height:44px;vertical-align:top;border-radius:6px;background-color:transparent}.b_searchboxSubmit{height:40px;width:40px;text-indent:-99em;border-width:0;border-style:solid;margin:3px 3px 3px 7px;background-position:-762px 0;-webkit-transform:scale(.45);-ms-transform:scale(.45);transform:scale(.45)}#sw_as{width:auto;position:relative;z-index:6}.sa_as{position:absolute;width:100%}#sa_ul div.sa_tm,#sa_ul .sa_hd{margin-left:20px}#sw_as #sa_ul li.pp_tile{padding-left:20px}.sa_hd{padding-top:5px}.b_searchboxSubmit,.sa_sg{cursor:pointer}#sb_form_q::-webkit-search-cancel-button{display:none}#b_header .b_scopebar .b_active,#b_results .b_pag a.sb_pagS_bp{border-color:#174ae4}#b_header #rh_animcrcl.serp.anim,#b_header .rwds_svg.serp circle{stroke:#174ae4}#b_header #rh_meter_heart path,#b_header #rh_animpath.serp.anim,#b_header .rh_reedm .rhfill.serp .medal,#b_header .rhlined.serp .medal{fill:#174ae4}.b_searchboxForm{box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.09);border-radius:6px;border-left:1px solid transparent;border-right:none;border-top:1px solid transparent;border-bottom:1px solid transparent}.b_idOpen #id_d,#bepfo,#id_hbfo.slide_down{box-shadow:0 0 0 1px rgba(0,0,0,.1),0 2px 4px 1px rgba(0,0,0,.18);border-radius:6px}#sw_as #sa_ul:not(:empty){box-shadow:0 0 0 1px rgba(0,0,0,.1),0 2px 4px 1px rgba(0,0,0,.18)}.b_searchboxForm:hover,.b_focus .b_searchboxForm{box-shadow:0 0 0 1px rgba(0,0,0,.1),0 2px 4px 1px rgba(0,0,0,.18);border-left:1px solid transparent;border-right:none;border-top:1px solid transparent;border-bottom:1px solid transparent}.as_on .b_searchboxForm{border-radius:6px 6px 0 0}@media screen and (-ms-high-contrast:active){.b_idOpen #id_d{border:1px solid #fff}}@media screen and (-ms-high-contrast:black-on-white){.b_idOpen #id_d{border:1px solid #000}}#sw_as #sa_ul:not(:empty),#sw_as li:last-of-type.sa_hv{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.spl-headerbackground{border-radius:6px 6px 0 0}body,#b_header{min-width:1204px}#id_h{display:block;position:relative;float:right;text-align:right;margin:0;line-height:50px;right:40px}.id_button{margin:0 8px;vertical-align:top}#id_rh,#id_rbh{padding:0 4px 0 24px;margin:0}.sw_spd{height:64px;width:64px;border-radius:50%;top:-7px;background-repeat:no-repeat;background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png);transform:scale(.5);background-position:-362px -28px;margin:0 -16px 0 -8px;vertical-align:top}.sw_meIc{vertical-align:top;margin:16px 0 0 16px}#bepfo,#bepfm,#bepfl{width:320px}#bepfm{display:block}#bepfl{text-align:center;margin:50px 0}#bepfo{position:absolute;right:0;z-index:6;text-align:left}.idp_ham{margin:0 20px 0 16px;height:14px;width:20px}.b_scopebar{padding:0;margin:7px 0 0 var(--lgutter);border-bottom:none}#b_header{border-bottom:1px solid #ececec}.blue2#miniheader .b_scopebar ul{height:33px;overflow-y:hidden}.b_scopebar ul{height:39px;overflow-y:hidden}.b_scopebar li{padding:3px 0;margin:0 12px;line-height:25px;font-size:11px;letter-spacing:initial}.b_scopebar>ul li{text-transform:uppercase}.b_scopebar a{padding:0 8px}.b_scopebar .b_active{border-bottom:3px solid #00809d}#b_header .b_topbar,#b_header .b_scopebar{background:none;overflow-y:inherit}#b_header .b_topbar{margin-bottom:0}#b_header .b_scopebar{margin-bottom:0}.b_scopehide{content-visibility:hidden}.b_logo{font-family:'Roboto',Helvetica,Sans-Serif}a,#b_header a,#b_header a:hover,.b_toggle,.b_toggle:hover{text-decoration:none}input{font:inherit;font-size:100%}.b_searchboxForm{font:18px/normal 'Roboto',Helvetica,Sans-Serif}.b_searchbox{font-size:16px}.id_button{line-height:50px;height:50px}.b_scopebar .b_active a{font-weight:600}.b_scopebar,.b_scopebar li{line-height:30px}.sa_tm{line-height:36px}.b_scopebar li{vertical-align:top}#sa_ul,.pp_title{font:16px/normal 'Roboto',Sans-Serif}#sa_ul .sa_hd{color:#444;font:600 13px/16px 'Roboto',Sans-Serif;cursor:default;text-transform:uppercase;font-weight:bold}#sw_as strong{font-weight:bold}z{a:1}#sb_go_par{display:inline-block}#hp_container #sb_go_par{display:inline}#sb_go_par:hover::before,#sb_go_par.shtip::before,#sb_go_par[vptest]::before{bottom:-15px;left:26px;z-index:6}#sb_go_par:hover::after,#sb_go_par.shtip::after,#sb_go_par[vptest]::after{top:52px;left:26px;z-index:4}#miniheader #sb_go_par:hover::before,#miniheader #sb_go_par:hover::after{left:18px}*[data-sbtip]{position:relative}[vptest]::after,*[data-sbtip]:not(.disableTooltip):hover::after,*[data-sbtip].shtip:not(.disableTooltip)::after{position:absolute;background-color:#666;content:attr(data-sbtip);font:13px/18px Arial,Helvetica,sans-serif;white-space:nowrap;color:#fff;padding:10px 15px;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(0,0,0,.06),0 4px 12px 1px rgba(0,0,0,.14);border-radius:4px}[vptest]::before,*[data-sbtip]:not(.disableTooltip):hover::before,*[data-sbtip].shtip:not(.disableTooltip)::before{position:absolute;background-color:#666;width:12px;height:12px;content:\"\";transform:translateX(-50%) rotate(45deg)}.mic_cont.partner [data-sbtipx]:hover::before{bottom:-29px;left:10px}.mic_cont.partner [data-sbtipx]:hover::after{top:38px;left:10px}.disableTooltip *[data-sbtip]:hover::before,.disableTooltip *[data-sbtip]:hover::after,.disableTooltip *[data-sbtip].shtip::before,.disableTooltip *[data-sbtip].shtip::after,.as_on *[data-sbtip]:hover::before,.as_on *[data-sbtip]:hover::after,.as_on *[data-sbtip].shtip::before,.as_on *[data-sbtip].shtip::after,.focus_hi *[data-sbtip]:hover::before,.focus_hi *[data-sbtip]:hover::after,.focus_hi *[data-sbtip].shtip::before,.focus_hi *[data-sbtip].shtip::after{display:none}#id_h #id_l{margin-right:0;display:inline-block}#id_a{vertical-align:top;position:relative;top:8px}#id_rh,#id_rbh{padding-left:24px}.idp_ham{margin-left:20px}z{a:1}::-webkit-search-decoration,::-webkit-search-cancel-button,.b_searchbox{-webkit-appearance:none}#b_skip_to_content{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:4px 4px 4px 19px;position:absolute;left:0;top:24px;background:#ececec;box-shadow:0 1.2px 3.6px rgba(0,0,0,.1),0 6.4px 14.4px rgba(0,0,0,.13);border-radius:0 28px 28px 0;z-index:1000}#b_skip_to_content:not(:focus){padding:0;clip:rect(1px,1px,1px,1px)}#b_skip_to_content .text-back{display:flex;flex-direction:row;align-items:flex-start;background:#fff;border-radius:16px;flex:none;order:0;flex-grow:0}#b_skip_to_content .text{font-weight:500;font-size:13px;line-height:16px;color:#001ba0;flex:none;order:0;flex-grow:0;margin:8px 17px}.b_searchbox { width: 571px; } .hasmic .b_searchbox { width: 535px; } .hassbi .b_searchbox { width: 535px; } .hasmic.hassbi .b_searchbox { width: 499px; } #b_header .b_searchboxForm .b_searchbox.b_softkey { width: 533px; } #b_header .hasmic .b_searchboxForm .b_searchbox.b_softkey { width: 497px; } #b_header .hassbi .b_searchboxForm .b_searchbox.b_softkey { width: 497px; } #b_header .hasmic.hassbi .b_searchboxForm .b_searchbox.b_softkey { width: 461px; } .b_searchboxForm.as_rsform .b_searchbox { width: 897px; } .hasmic .b_searchboxForm.as_rsform .b_searchbox { width: 861px; } .hassbi .b_searchboxForm.as_rsform .b_searchbox { width: 861px; } .hasmic.hassbi .b_searchboxForm.as_rsform .b_searchbox { width: 825px; } #b_header .b_searchboxForm.as_rsform .b_searchbox.b_softkey { width: 859px; } #b_header .hasmic .b_searchboxForm.as_rsform .b_searchbox.b_softkey { width: 823px; } #b_header .hassbi .b_searchboxForm.as_rsform .b_searchbox.b_softkey { width: 823px; } #b_header .hasmic.hassbi .b_searchboxForm.as_rsform .b_searchbox.b_softkey { width: 787px; }a{z:1}a{z:1}#b_header .b_searchboxForm,#uaanswer .b_searchboxForm{border-radius:24px}#b_header .b_searchbox,#uaanswer .b_searchboxForm{border-radius:24px}.as_on #b_header .b_searchboxForm,.as_on #b_header .b_searchboxForm:focus-within{border-radius:12px 12px 0 0}.as_no_s #b_header.b_focus .b_searchboxForm,.as_nw #b_header.b_focus .b_searchboxForm,#b_header .b_searchboxForm:focus-within,#b_header .b_searchboxForm:has(textarea:not([rows=\"1\"])){border-radius:12px}#b_header #sw_as{top:1px}#b_header #sw_as #sa_ul,#uaanswer #sw_as #sa_ul,#sw_as #sa_ul li:last-of-type{border-radius:0 0 12px 12px}.sb_bpr{height:44px;line-height:40px}#sb_clt.sb_clrhov{display:inline-block;overflow:visible;top:0;margin:3px 0;vertical-align:middle}#sb_clt #sw_clx{padding:9px;height:22px;display:inline-block;line-height:20px}#sb_clt[data-sbtipx]:hover::before{bottom:-15px;left:50%}#sb_clt[data-sbtipx]:hover::after{left:50%;top:49px}#b_header .hasmic .mic_cont.partner{margin:3px 0;vertical-align:middle}#b_header .mic_cont.partner .mic_icon{margin:11px 9px}#b_header .mic_cont.partner .sb_icon{font-size:0;height:18px;width:18px}#b_header .mic_cont.partner .b_icon{width:36px;z-index:4}#b_header .mic_cont.partner .b_icon:hover::before{bottom:-15px;left:12px;position:absolute;background-color:#666;width:12px;height:12px;content:\"\";transform:rotate(45deg);z-index:6}#b_header .mic_cont.partner .b_icon:hover::after{top:49px;left:18px;position:absolute;background-color:#666;content:attr(data-sbtipx);font:13px/18px Arial,Helvetica,sans-serif;white-space:nowrap;color:#fff;padding:10px 15px;box-shadow:0 0 0 1px rgba(0,0,0,.06) 0 4px 12px 1px rgba(0,0,0,.14);border-radius:4px;z-index:4}#b_header .b_searchboxForm #sbiarea{margin:3px 0;vertical-align:middle}#b_header .b_searchboxForm #sb_sbi{padding:11px 9px;font-size:0}#b_header .b_searchboxForm #sb_sbip:not(.disableTooltip):hover::before,#b_header .b_searchboxForm #sb_sbip.shtip:not(.disableTooltip)::before,#b_header .b_searchboxForm #sb_sbip[vptest]::before{bottom:-15px;left:18px}#b_header .b_searchboxForm #sb_sbip:not(.disableTooltip):hover::after,#b_header .b_searchboxForm #sb_sbip.shtip:not(.disableTooltip)::after,#b_header .b_searchboxForm #sb_sbip[vptest]::after{top:49px;left:18px}#b_header .b_searchboxForm #sb_search{display:inherit;vertical-align:middle;border-radius:50%;margin:3px 7px 3px 0}#sb_search,#sb_search a{display:inline-block}#b_header .b_searchboxForm #sb_search{position:relative}#b_header .b_searchboxForm #sb_search #b_icon_spyglass{position:absolute;cursor:pointer;pointer-events:none}#b_header .b_searchboxForm #sb_search #b_icon_spyglass:not(svg){background-position:-762px 0;width:36px;height:36px;transform:scale(.5);top:2px;left:2px}.b_searchboxForm #sb_search svg#b_icon_spyglass{fill:#00809d;width:calc(36px*.5);height:calc(36px*.5);padding:11px}#b_header .b_searchboxForm .b_searchboxSubmit{margin:0;transform:none;background-image:none;background-color:transparent;width:40px;height:40px;border-radius:50%}#b_header #sb_go_par:hover::before,#b_header #sb_go_par.shtip::before,#b_header #sb_go_par[vptest]::before{bottom:-15px;left:20px}#b_header #sb_go_par:hover::after,#b_header #sb_go_par.shtip::after,#b_header #sb_go_par[vptest]::after{top:49px;left:20px}#b_header .b_searchboxForm #sb_search #b_icon_spyglass:not(svg){background-position-y:-40px}a{z:1}#b_header .b_searchboxForm #sb_search #b_icon_spyglass:not(svg){background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.b_logo:after{position:absolute}.b_logo:after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.b_logo{transform:none}.b_logo:after{transform-origin:-48px 0}#detailPage .b_logo:after,#bnp_cookie_banner .b_logo:after{transform-origin:-48px 0}@media(forced-colors:active){.b_logo{forced-color-adjust:none;background-color:#000}}.b_logoArea{text-align:right;width:140px;height:40px;margin:0 20px 0 0;vertical-align:top}.b_logo{text-align:left;vertical-align:top;position:relative;display:inline-block;width:116px;height:18px;margin-top:15px;text-indent:0;overflow:hidden;direction:ltr}.b_logo:after{position:relative;display:inline-block;transform:scale(.5)}#detailPage .b_logo,#bnp_cookie_banner .b_logo{transform:none}@media(forced-colors:active){.b_logo{forced-color-adjust:none;background-color:#000}}.b_logo:after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}#b_header .b_searchboxForm #sb_search{margin:3px 4px 3px 3px;height:40px}#b_header .b_searchbox{border-radius:0;margin-left:-15px;margin-right:6px}#b_header #sb_form:not(.hassbi,.hasmic) .sb_clrhov,#b_header.b_focus #sb_form:not(.hassbi,.hasmic) .b_searchboxForm .sb_clrhov{margin-right:10px}.hassbi #sb_clt.sb_clrhov,.hasmic #sb_clt.sb_clrhov{margin-right:0}#b_header #sb_clt.sb_clrhov+#vkeyIcon{margin-left:-10px;margin-right:10px}#b_header .hassbi #sb_clt.sb_clrhov+#vkeyIcon,#b_header .hasmic #sb_clt.sb_clrhov+#vkeyIcon{margin-left:0;margin-right:0}#b_header .b_searchboxForm #sbiarea{margin-right:10px}#b_header .hasmic:not(.hassbi) .mic_cont.partner{margin-right:10px}div:not(#sb_search) .b_searchboxSubmit{margin-left:5px}#b_header .b_searchboxSubmit~#sw_clx{right:2px}#b_header .b_searchboxSubmit~.b_searchbox{margin-right:8px}.b_searchboxSubmit{background-repeat:no-repeat}.b_searchboxSubmit{background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}#b_header .b_searchboxForm { height: 46px; } #b_header.b_focus .b_searchboxForm, #b_header.b_expanded .b_searchboxForm{ height: unset; } #b_header .b_searchboxForm .b_searchbox { line-height: 44px; padding-top: unset; overflow: hidden; height: unset; white-space: nowrap; resize: none; } #b_header.b_focus .b_searchboxForm .b_searchbox, #b_header.b_expanded .b_searchboxForm .b_searchbox { line-height: 24px; padding-top: 10px; white-space: unset; } body:not(.b_sydConvMode) #b_header { height: 94px ; } body:not(.b_sydConvMode) #b_header.b_expanded { height: unset !important; } body { --cib-header: 94px; }#b_header{height:94px;position:relative}#b_header.b_2ndscope{height:48px}body:not(.b_sydConvMode) #b_header.b_expanded{height:unset}#b_header .b_scopebar{position:absolute}#b_scope_container{height:39px;position:relative}#b_scope_container .b_scopebar{position:absolute}body #b_header .b_scopebar{margin-bottom:0}body:not(.b_sydConvMode) .b_scopebar{bottom:0}body:not(.b_sydConvMode) #b_header.b_expanded .b_scopebar{position:unset;top:unset}#b_header .b_searchboxForm{z-index:7}.b_searchbox{line-height:44px;overflow:hidden;white-space:nowrap;resize:none}.b_focus .b_searchbox,.b_expanded .b_searchbox{padding-top:10px;padding-bottom:10px;display:inline-flex;line-height:24px;height:unset;white-space:unset;resize:unset}#sb_toolbar{display:none;justify-content:flex-end;width:100%}#sb_toolbar.b_hide{display:none !important}.b_focus #sb_toolbar,.b_expanded #sb_toolbar{display:flex}#sb_chcounter_r{padding:0 8px 12px 0;font-size:14px}#sb_expand_r,#sb_collapes_r{padding:0 18px 12px 12px}#sb_form:not(.hassbi) #sbiarea,#sb_form:not(.hasmic) .mic_cont{display:none}.qfc{word-break:break-all;grid-area:content;background:transparent;pointer-events:none;white-space:pre-wrap !important;position:absolute;display:unset !important;font-feature-settings:\"liga\" 0}.user-prefix{word-break:break-word;display:inline;color:transparent}.ghost{display:inline;color:#767676;white-space:pre-wrap}.nudge{display:none;color:#767676;border:1px solid #767676;margin-left:5px;padding:0 4px;width:fit-content;height:16px;font-size:11px;background-color:transparent;border-radius:3px;text-align:center}.nudge.nudgeVisible{display:inline}#sb_clt{display:inline;margin:0 6px 0 0;top:-1px}.sb_clrhov{visibility:hidden}.b_searchboxForm.sh-b_searchboxForm #sb_clt,#detailheader #sb_clt{display:none}body.b_sbText #b_header .b_searchboxForm:hover .sb_clrhov,body.b_sbText.as_on #b_header .sb_clrhov,body.b_sbText #b_header.b_focus .b_searchboxForm .sb_clrhov{visibility:visible}*[data-sbtipx]:hover::after{position:absolute;top:40px;left:6px;background-color:#666;content:attr(data-sbtipx);font:13px/18px Arial,Helvetica,sans-serif;white-space:nowrap;color:#fff;padding:10px 15px;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(0,0,0,.06),0 4px 12px 1px rgba(0,0,0,.14);border-radius:4px;z-index:4}*[data-sbtipx]:hover::before{position:absolute;bottom:-27px;left:6px;background-color:#666;width:12px;height:12px;content:\"\";transform:translateX(-50%) rotate(45deg);z-index:6}.as_on *[data-sbtipx]:hover::before,.as_on *[data-sbtipx]:hover::after{display:none}#keyBoardTop{display:inline-block;cursor:move;height:40px;vertical-align:middle}#keyboard>div{direction:ltr}.copyClip{background-position:center;background-repeat:no-repeat}.key{height:30px;margin:2px;padding:0 1px 1px;border:none;cursor:pointer;vertical-align:middle;padding-left:2px}.key:hover{background-color:#159cff;color:#fff}#iK.key:hover,#iK1.key:hover{background-color:#eee}.selectedKey{background-color:#666;color:#fff}.normalKey{background-color:#ccc;color:#333}#closeSoftKeyboard{cursor:pointer;background:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png) -218px -40px no-repeat;float:right;height:24px;width:24px;margin:10px 0 0;transform:scale(.5)}.keyboardExt{width:570px !important}#keyboard{padding:0 10px 10px;position:absolute;right:30px;width:540px;height:220px;z-index:100009;margin:5px -10px 0 0;font-size:15px;background:#fff;border:2px solid #ddd;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}#keyboard:focus{outline:none}.hideData{display:none}.skbCK{width:30px}.skbCAK{width:90px}.skbRCAK{width:145px}.skbSK{width:70px}.skbRSK{width:118px}.extSkbRSK{width:80px}.extSkbRSK1{width:50px}.extSkbRSK2{width:83px}.skbCapK{width:50px}.skbSpK{width:290px}.rtl .skbSK{width:75px !important}.rtl .skbCapK{width:50px !important}.rtl .skbRSK{width:114px !important}.skbIK{width:45px;background-color:#eee}.skbRIK{width:41px;background-color:#eee}.skbEK{width:104px}.extSkbEK{width:60px}.extSkbEK1{width:70px}.skbBK{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAANBAMAAABBQrPjAAAAIVBMVEX///9AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBoDRfjAAAACnRSTlMAETNmd4iZzN3ul1cQFgAAAFFJREFUCFtjYGBg6loFAUsYGBg0i40hIAsoMV2AAQKsgBKFDAzsCQzpIA5Ygm0Z2zIQR7MRpCKrKwHE6VIAcThWMGDIoOhBMQ3VHhQXINy2FAB95iAI/vLOaQAAAABJRU5ErkJggg==);background-position:center;background-repeat:no-repeat;width:90px}.sbkBK:active{background-position:53% 55%}#mlKbLang{margin:10px 0 0 5px;padding:0 0 0 5px;height:32px;cursor:pointer}#vkeyIcon{padding:0 0 0 58px;background-position:center;background-repeat:no-repeat;cursor:pointer;padding-bottom:2px}#vkeyIcon:hover::before{bottom:-15px;left:50%;z-index:6}#vkeyIcon:hover::after{left:50%;top:49px;z-index:4}#hp_container #vkeyIcon{height:27px;vertical-align:-10px;display:inline-block}#hp_container #vkeyIcon:hover::before{bottom:-19px;left:28px}#hp_container #vkeyIcon:hover::after{top:38px;left:28px}rtl #hp_container #vkeyIcon:hover::before,.rtl #hp_container #vkeyIcon:hover::after{left:-40px}#miniheader #vkeyIcon:hover::after{top:37px}#b_header #vkeyIcon,#detailheader #vkeyIcon,#miniheader #vkeyIcon{display:inline-block;background-position:center;background-repeat:no-repeat;cursor:pointer;vertical-align:top;margin:3px 0;padding:11px 9px;background-origin:content-box;width:20px;height:18px}#b_header #vkeyIcon :not(svg).sb_icon,#detailheader #vkeyIcon :not(svg).sb_icon,#miniheader #vkeyIcon :not(svg).sb_icon{width:20px;height:18px}#b_header #vkeyIcon :not(svg).sb_icon:after,#detailheader #vkeyIcon :not(svg).sb_icon:after,#miniheader #vkeyIcon :not(svg).sb_icon:after{background-position:-802px 0;width:40px;height:36px;transform:scale(.5);content:\"\";position:absolute;top:2px;left:-1px}#vkeyIcon svg.sb_icon{fill:#00809d}@media screen and (-ms-high-contrast:active){#hp_container .vkeyRest{background-image:url(/rp/dEn87n0BXi1cjqkoEYloE-b3UKE.svg)}}.copyClip{background:url(/rp/yjAjPJIMzvruRcshny6aujakheA.png)}#b_header #vkeyIcon :not(svg).sb_icon:after,#detailheader #vkeyIcon :not(svg).sb_icon:after,#miniheader #vkeyIcon :not(svg).sb_icon:after{background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}#hp_container .vkeyRest{background-image:url(/rp/dEn87n0BXi1cjqkoEYloE-b3UKE.svg)}#sb_go_par{display:inline-block}#hp_container #sb_go_par{display:inline}#sb_go_par:hover::before,#sb_go_par.shtip::before,#sb_go_par[vptest]::before{bottom:-15px;left:26px;z-index:6}#sb_go_par:hover::after,#sb_go_par.shtip::after,#sb_go_par[vptest]::after{top:52px;left:26px;z-index:4}#miniheader #sb_go_par:hover::before,#miniheader #sb_go_par:hover::after{left:18px}*[data-sbtip]{position:relative}[vptest]::after,*[data-sbtip]:not(.disableTooltip):hover::after,*[data-sbtip].shtip:not(.disableTooltip)::after{position:absolute;background-color:#666;content:attr(data-sbtip);font:13px/18px Arial,Helvetica,sans-serif;white-space:nowrap;color:#fff;padding:10px 15px;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(0,0,0,.06),0 4px 12px 1px rgba(0,0,0,.14);border-radius:4px}[vptest]::before,*[data-sbtip]:not(.disableTooltip):hover::before,*[data-sbtip].shtip:not(.disableTooltip)::before{position:absolute;background-color:#666;width:12px;height:12px;content:\"\";transform:translateX(-50%) rotate(45deg)}.mic_cont.partner [data-sbtipx]:hover::before{bottom:-29px;left:10px}.mic_cont.partner [data-sbtipx]:hover::after{top:38px;left:10px}.disableTooltip *[data-sbtip]:hover::before,.disableTooltip *[data-sbtip]:hover::after,.disableTooltip *[data-sbtip].shtip::before,.disableTooltip *[data-sbtip].shtip::after,.as_on *[data-sbtip]:hover::before,.as_on *[data-sbtip]:hover::after,.as_on *[data-sbtip].shtip::before,.as_on *[data-sbtip].shtip::after,.focus_hi *[data-sbtip]:hover::before,.focus_hi *[data-sbtip]:hover::after,.focus_hi *[data-sbtip].shtip::before,.focus_hi *[data-sbtip].shtip::after{display:none}.b_searchboxForm{position:relative}.mic_cont{cursor:pointer;display:inline-block}.mic_cont #vs_mic_icon{margin:11px 9px;height:18px;width:18px}.mic_cont #vs_mic_icon:not(svg){background-size:463px 46px;background-repeat:no-repeat;background-position:-361px 0;z-index:1;float:left}.mic_cont svg#vs_mic_icon{position:absolute;fill:#00809d}.mic_cont .ovr_cont{width:36px;height:40px}.mic_cont.partner{vertical-align:middle}.mic_cont .disableDefaultTooltip[data-tooltip]:hover::before,.mic_cont .disableDefaultTooltip[data-tooltip]:hover::after{display:none}.mic_cont .b_icon{position:relative;height:100%;visibility:hidden}.mic_cont .b_icon .icon_path{fill:#00809d}.mic_cont #pv_tooltip,.mic_cont #pvl_tooltip{padding:18px;background:#fff;position:absolute;z-index:1001;width:220px;border-radius:4px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 4px 12px 1px rgba(0,0,0,.14);font-family:Arial,Helvetica,Sans-Serif;font-size:13px;color:#444;left:-192px;top:48px;cursor:auto}.mic_cont .b_tooltip_point{transform:rotate(45deg);display:block;width:14px;height:14px;background:#fff;margin-top:-27px;border:1px solid #f5f5f5;border-bottom:transparent;border-right:transparent;left:202px;position:absolute;z-index:-1;box-shadow:-1px -1px 0 1px rgba(0,0,0,.01),-1px -1px 0 1px rgba(0,0,0,.01)}.mic_cont .b_tooltip_close_btn{position:absolute;right:15px;top:15px;cursor:pointer;z-index:1}.mic_cont .b_tooltip_title{font-size:16px;font-family:'Segoe UI',Arial,Helvetica,Sans-Serif;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-bottom:12px}.mic_cont .b_tooltip_description{text-align:left;color:#666;margin-bottom:10px;font-size:14px}.mic_cont .b_tooltip_close{width:15px;height:15px}.mic_cont .b_pvl_cont{width:fit-content;height:112px;background-color:#f5f5f5;padding:25px;cursor:pointer;font:13px/20px 'Roboto',Helvetica,Sans-Serif;color:#00809d;margin:auto;margin-bottom:10px}.mic_cont .b_pvl_icon{width:64px;height:64px;margin:auto;margin-bottom:4px}.mic_cont .b_pvl_cont span{font:13px/20px 'Roboto',Helvetica,Sans-Serif;color:#767676;text-align:center;display:block}.mic_cont hr.b_tooltip_divider{border-top:1px solid #bbb;border-radius:5px;margin-top:12px;margin-bottom:12px}.mic_cont.icon .b_icon{visibility:visible}.mic_cont .b_allowOverlay svg{height:unset;width:unset}.read_icon{width:100%;height:100%}@keyframes small_l{0%{transform:scaleY(1)}100%{transform:scaleY(7)}}.b_read_sl{animation:small_l .5s alternate infinite;transform-origin:center;transition:all .5s}@keyframes large_l{0%{transform:scaleY(1)}100%{transform:scaleY(.1429)}}.b_read_ll{animation:large_l .5s alternate infinite;transform-origin:center;transition:all .5s}@keyframes med_l{0%{transform:scaleY(1)}50%{transform:scaleY(1.8)}100%{transform:scaleY(.55)}}.b_read_ml{animation:med_l .5s alternate infinite;transform-origin:center;transition:all .5s}.b_allowOverlay{position:fixed;background:rgba(0,0,0,.7);height:100%;width:100%;top:0;left:0;z-index:6;cursor:auto}.b_ov_blocked .b_ov_perms{width:131px;height:109px;position:absolute;right:20px}.b_ov_blocked .b_ov_permZoom{height:100px;width:100px;border-radius:50px;position:absolute;top:0;left:unset;right:53px}.b_ov_blocked .b_ov_click{top:33px;left:3px}.b_ov_blocked .b_ov_click2{top:-25px;left:unset;right:27px}.b_ov_blocked .b_ov_textCont{left:63px;top:54px}.b_ov_blocked .b_ov_txt_lst{margin-left:18px}.b_ov_blocked .b_ov_txt_lst_itm{list-style:decimal}.b_overlayCont{position:relative;width:600px;height:394px;margin:100px auto auto auto;background-color:#c4c4c4;border-radius:10px;overflow:hidden}.rms_image{height:100%;width:100%;display:block}.b_ov_dots{position:absolute;padding:7px 0 0 13px;cursor:pointer}.b_ov_close{width:12px;height:12px;position:absolute;right:8px;top:6px;cursor:pointer}.b_ov_sb{background-color:#e8e8e8;height:30px;margin-top:23px;overflow:auto}.b_ov_sb .b_ov_bar .b_ov_micx{height:10px;width:8px;position:absolute;right:29px;top:3px}.b_ov_sb .b_ov_bar .b_ov_star{height:10px;width:9px;position:absolute;right:11px;top:2px}.b_ov_bar{background-color:#fff;height:16px;width:580px;margin:7px 0 0 10px;border-radius:4px;position:relative}.b_ov_body{height:341px;background-color:#114a8b;position:relative;border-radius:0 0 9px 9px}.b_ov_perms{width:125px;height:51px;margin-left:15px}.b_ov_permZoom{height:128px;width:128px;border-radius:64px;position:absolute;top:-15px;left:30px;box-shadow:0 2px 4px 1px rgba(0,0,0,.14);-webkit-box-shadow:0 2px 4px 1px rgba(0,0,0,.14);overflow:hidden}.b_ov_click{width:30px;height:30px;position:absolute;top:70px;left:70px}.b_ov_hand{width:30px;height:29px;position:absolute;top:15px;left:15px}.b_ov_hand_step{position:absolute;left:16px;top:6px;color:#000}.b_ov_textCont{position:absolute;left:160px;top:85px}.b_ov_mic{height:50px;width:35px;margin-bottom:23px}.b_ov_mic .icon_path{fill:#fff}.b_ov_title{color:#fff;font-size:24px;line-height:28px;margin-bottom:20px}.b_ov_text{color:#fff;font-size:16px;line-height:18px;font-weight:100;font-style:normal}.sb_bpr~.mic_cont #vs_mic_icon:not(svg){background-position:-361px 0}.sb_bpr~.mic_cont svg#vs_mic_icon,.sb_bpr~.mic_cont .icon_path{fill:#111}.b_speech_overlay{cursor:default;z-index:1005}.b_speech_cont{left:0;top:0;width:100%;height:200px;z-index:5;overflow:hidden;position:absolute;background:#fff;border:1px solid #ccc;box-sizing:border-box;box-shadow:0 4.8px 14.4px rgba(0,0,0,.18),0 25.6px 57.6px rgba(0,0,0,.12);border-radius:6px}.b_speech_cont.b_speech_suggestions{height:auto}.b_speech_cont.b_speech_suggestions .b_speech_cont_main{height:200px}.b_speech_suggestions .b_mic_close{top:100px}.b_mic_close{cursor:pointer;height:102px;width:102px;top:50%;right:19px;transform:translate3d(0,-50%,0);position:absolute;transition:transform .2s;background:none;border:none;padding:0}.b_mic_close:hover{transform:translate3d(0,-50%,0) scale(1.1)}.b_mic_close:active{transform:translate3d(0,-50%,0)}.b_speech_suggestion_container{padding:3%;padding-top:0}.b_suggestion_item{display:inline-block;border:1px solid #ddd;border-radius:36px !important;padding:0 16px 0 12px;cursor:pointer;height:36px;background-color:#fff;vertical-align:middle;width:100%;text-align:left}.b_suggestion_item:hover{background-color:#ececec}.b_suggestion_item:hover .b_suggestion_item_text{color:#444}.b_suggestion_item .b_suggestion_item_text{font:16px/normal 'Roboto',Sans-Serif;line-height:36px;text-overflow:ellipsis;white-space:nowrap;margin:0 10px;color:#767676}@keyframes wave{0%{transform:rotatex(0deg)}100%{transform:rotatex(40deg)}}.b_mic_wave{animation:wave .5s alternate infinite;transform-origin:center bottom;transition:all .5s}@keyframes pulse{0%{transform:scale(1)}100%{transform:scale(1.25)}}.b_mic_pulse{animation:pulse .5s alternate infinite;transform-origin:center;transition:all .5s}.b_speech_suggestions .b_rec_text{top:100px}.b_rec_text{width:80%;position:absolute;font-style:normal;font-weight:normal;font-size:30px;line-height:35px;color:#404040;top:50%;padding:8px 32px;transform:translate3d(0,-50%,0);white-space:normal}.b_rec_placeholder{color:#767676}#b_noMic{display:inline-block}#b_noMic:hover{text-decoration:underline}.sbox .sb_form .mic_cont #vs_mic_icon.mic_icon{width:29px;height:22px;background-size:22px 22px;background-repeat:no-repeat;background-position:center;margin:0}.sbox .sb_form .mic_cont .ovr_cont{position:absolute;top:0;left:0;height:100%;width:100%}.b_searchboxForm .b_speech_cont{left:-3px;top:-3px;width:calc(100% - -3px - -3px);box-shadow:0 0 0 1px rgba(0,0,0,.1),0 2px 4px 1px rgba(0,0,0,.18);border-left:1px solid transparent;border-right:none;border-top:1px solid transparent;border-bottom:1px solid transparent}.mic_cont.icon.partner{background:transparent;padding:0}.mic_cont #vs_mic_icon:not(svg){background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.mic_cont .b_tooltip_close{background-image:url(/rp/fdVZU4ttbw8NDRm6H3I5BW3_vCo.svg)}.sbox .sb_form .mic_cont #vs_mic_icon.mic_icon{background-image:url(/rp/yFxRwxrSg4AefXfEJUKsQSDhvz8.png)}#sbiarea{display:inline-block}#sb_sbi{display:inline-block;cursor:pointer;vertical-align:middle;position:relative;width:18px;height:18px}:not(svg)#sbi_b{background-position:-682px 0;width:36px;height:36px;transform:scale(.5);position:absolute;top:2px;left:0}svg.sb_icon{fill:#00809d}#sb_sbip[shdlg]:hover::before,#sb_sbip[shdlg]:hover::after,#sb_sbip[shdlg].shtip::before,#sb_sbip[shdlg].shtip::after{display:none}:not(svg)#sbi_b{background-image:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.phead #chat_upsell_bubble_icon{display:none}#b_phead_chat{display:inline-block;vertical-align:top}.b_sydConvMode #sb_form #chat_upsell_bubble_icon{transition-delay:0s,0s;opacity:0;visibility:hidden}.phead_border .b_phead_chat_link{display:none}.chat_upsell_scope_bar_hidden{display:none}#sb_form #chat_upsell_bubble_icon.b_hide{display:none}#sb_form #chat_upsell_bubble_icon{margin-left:16px;font-size:11px;color:#444;display:inline-block;vertical-align:top;margin-top:4px;cursor:pointer;width:40px;height:40px;background:url(/rp/em88jYr3ZOv7yX3AqoOU5z8EEnA.png) no-repeat;background-size:40px 40px;transition-property:opacity,visibility;transition-delay:1000ms,1000ms;transition-duration:0s;transition-timing-function:cubic-bezier(.75,0,.25,1);opacity:1;visibility:visible}@media(max-width:1232px){#sb_form .b_phead_chat_link{display:none}}#sb_form #chat_upsell_bubble_icon:hover{background:url(/rp/wyumpKcxMMmwB6w11Xy29cAPKig.png) no-repeat;background-size:40px 40px}.b_dark #sb_form #chat_upsell_bubble_icon{border-color:#545250;color:#edebe9;background:url(/rp/em88jYr3ZOv7yX3AqoOU5z8EEnA.png) no-repeat;background-size:40px 40px}.b_dark #sb_form #chat_upsell_bubble_icon:hover{background:url(/rp/wyumpKcxMMmwB6w11Xy29cAPKig.png) no-repeat;background-size:40px 40px}@media(max-width:1640px){html #b_header.as_rsform .b_phead_chat_link{display:none}}@media(max-width:1440px){#id_n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;display:inline-block}}a.cbtn,.cbtn a,.cbtn input{-webkit-appearance:none;border-radius:2px;border:1px solid #ddd;min-width:50px;max-width:100%;line-height:30px;padding:0 15px;display:inline-block;font-size:inherit;text-align:center;text-decoration:none;cursor:pointer;font-weight:normal}a.cbtn.b_compact,.cbtn.b_compact a,.cbtn.b_compact input{line-height:26px}a.cbtn,.cbtn a,.cbtn input,#b_content a.cbtn,#b_content a.cbtn:visited,#b_content .cbtn a,#b_content .cbtn a:visited{color:#666;background-color:#f5f5f5}#b_content a.cbtn:hover,#b_content .cbtn a:hover,.cbtn input:hover{background-color:#f9f9f9;color:#111;border-color:#ccc;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}#b_content a.cbtn:active,#b_content .cbtn a:active,.cbtn input:focus,.cbtn input:active{background:#ececec;color:#111;border-color:#ccc;box-shadow:none;-webkit-box-shadow:none}.cbtn input{height:32px;vertical-align:middle}.cbtn.b_compact input{height:28px}.cbtn input::-moz-focus-inner{padding:0;border:0}.btns{overflow:hidden;margin-bottom:4px}.splt{float:left}.splt_2btns{width:50%}.splt_3btns{width:33.33%}.splt_nm,.btns .cbtn *,.b_vPanel .btns .cbtn{margin-bottom:0}.btns .cbtn{margin-bottom:8px}.lBtn,.mBtn{margin-right:4px}.rBtn,.mBtn{margin-left:4px}.btns .cbtn a,.btns .cbtn input{width:calc(100% - 32px);margin-bottom:0}.b_1btns .cbtn{width:100%}.b_2btns .cbtn{width:calc(50% - 4px);min-width:calc(50% - 4px)}.b_3btns .cbtn{width:calc(33.33% - 5.333333333px);min-width:calc(33.33% - 5.333333333px)}.btns li.cbtn{display:inline-block}.b_2btns .cbtn:nth-child(even),.b_3btns .cbtn:nth-child(3n+2),.b_3btns .cbtn:nth-child(3n+3){margin-left:8px}.rwds_svg{vertical-align:top;display:inline-block}.rwds_svg.serp{margin:8px 0 0 8px}.rhlined,.rhfill{vertical-align:top;width:32px;height:32px}#id_rh,#id_rbh{position:relative}.id_button toolTip:after,#id_rh:after{white-space:pre-line !important;width:200px}.rhcoinflip{vertical-align:top;width:60px;height:60px;position:absolute;right:-6px;top:-6px}#idCont .rhcoinflip{position:absolute;right:-5px;top:-9px}#rh_meter{vertical-align:top;width:40px;height:40px;margin-left:-36px;margin-top:-4px}.rh_reedm .rhlined,.rhfill,.rh_reedm .meter,.rd_hide{display:none}.rhlined,.rh_reedm .rhfill,#rh_meter{display:inline-block}.noBg .rhlined.hp .meter,.noBg .rhfill.hp .meter,.rhlined.serp .meter,.rhfill.serp .meter{stroke:rgba(177,177,177,.4)}.rhlined.serp .medal{fill:#919191}.noBg .rh_reedm .rhfill.hp .medal,.rh_reedm .rhfill.serp .medal{fill:#00809d}#rh_animcrcl{fill:none;stroke:transparent;stroke-width:0}#rh_animcrcl.anim{stroke-width:2}.rh_scale .rhfill,.rh_scale #rh_meter{animation:scaling .4s cubic-bezier(.3,.55,.1,1)}@-webkit-keyframes scaling{0%{transform:scale(1,1)}50%{transform:scale(1.3,1.3)}100%{transform:scale(1,1)}}@keyframes scaling{0%{transform:scale(1,1)}50%{transform:scale(1.3,1.3)}100%{transform:scale(1,1)}}#id_rbh.serp{padding-right:0}#id_rbh.serp.reverse{padding-left:14px}#id_rbh.serp svg{height:25px;fill:#818285}@media(max-width:1362.9px){#id_h #id_rbh,#idCont #id_h #id_rbh{display:none}#id_rfob,#id_rfoc{display:none !important}}#b_header.bm_oneMap #id_rh.id_button.toolTip.rh_reedm{top:1px}#b_header.bm_oneMap #serp_medal_svg{margin-top:0 !important}#id_rfob{display:inline-flex;flex-direction:row;justify-content:center;align-items:center;position:relative}#id_rfb{margin-right:8px}#b_results .sb_add .b_rhonclick:hover{cursor:default}#id_h #id_mobile{display:inline-block}#idCont #id_h #id_mobile{margin-inline-start:12px}#idCont #id_h #id_mobile svg{position:relative;bottom:1px}#b_header #id_h #id_mobile{position:relative;top:5px}#b_header #id_h #id_mobile svg{fill:#174ae4}.b_dark #b_header #id_h #id_mobile svg{fill:#96afef}#idCont #id_h #id_mobile svg{fill:#fff}body:not(.b_dark) .hp_body.no_image #idCont #id_h #id_mobile svg{fill:#818285}#gihead #id_h #id_mobile svg{margin-top:5px;fill:#fff}#id_h #id_mobile svg circle.b_hide{display:none}#id_h #id_mobile.active::before,#id_h #id_mobile.active::after{opacity:0}#b_header #id_h #id_mobile.b_hide{display:none}.b_sydConvMode #b_header #id_h #id_mobile{display:inline-block}#idCont #id_h #id_mobile .mobicontxt{color:#fff}#gihead #id_h #id_mobile .mobicontxt{position:relative;bottom:10px}#b_header #id_h #id_mobile .mobicontxt{position:relative;bottom:12px}.b_dark #b_header #id_h #id_mobile .mobicontxt{color:#fff}@media screen and (max-width:1260px){#b_header #id_h #id_mobile:not(.b_sydConvMode){display:none}}nav.b_scopebar li#b-scopeListItem-conv:nth-child(n+3) svg{display:none}#b-scopeListItem-conv .scp_conv_mode{height:16px;width:16px}#b-scopeListItem-web .scp_conv_mode{height:15px;width:15px}#b-scopeListItem-conv .scp_conv_mode,#b-scopeListItem-web .scp_conv_mode{margin-right:6px;background-size:100%;display:inline-block;vertical-align:middle;position:relative;text-indent:0;overflow:hidden;direction:ltr;transform:none}#b-scopeListItem-conv .scp_conv_mode::after{transform-origin:-878px 0;transform:scale(.5);position:relative;display:inline-block}.b_active#b-scopeListItem-conv .scp_conv_mode::after{transform-origin:-878px 0;transform:scale(.5);position:relative;display:inline-block}#b-scopeListItem-web .scp_conv_mode::after{transform-origin:-846px -34px;transform:scale(.5);position:relative;display:inline-block}.b_active#b-scopeListItem-web .scp_conv_mode::after{transform-origin:-846px -34px;transform:scale(.5);position:relative;display:inline-block}nav.b_scopebar{transform:translateY(0);transition-property:transform;transition-duration:0s;transition-delay:823ms;transition-timing-function:cubic-bezier(.75,0,.25,1);position:relative}.b_sydConvMode nav.b_scopebar{width:500px;transform:translateY(-50px);transition-delay:187ms;margin-top:7px}.b_sydConvMode #b_scope_container nav.b_scopebar{margin-top:0}.b_sydConvMode nav.b_scopebar li:nth-child(n+3){display:none;transition-delay:0s}.b_scopebar .b_active{border-bottom:none}.b_scopebar li::after{content:'';width:100%;height:3px;display:block;opacity:0;background:#174ae4;margin-top:3px}.b_scopebar li.b_active:not(#b-scopeListItem-conv)::after{opacity:1}.b_sydConvMode .b_scopebar #b-scopeListItem-web::after{opacity:1}.b_scopebar #b-scopeListItem-web{position:relative}.b_scopebar #b-scopeListItem-web::after{position:absolute;width:100%;transition-property:transform,width;transition-duration:500ms;transition-timing-function:cubic-bezier(.75,0,.25,1)}.b_sydConvMode .b_bcbSwitch nav.b_scopebar li:nth-child(n+2){display:none;transition-delay:0s}@media(forced-colors:active){.b_scopebar li::after{background:Highlight}}#b-scopeListItem-conv .scp_conv_mode::after,.b_active#b-scopeListItem-conv .scp_conv_mode::after,#b-scopeListItem-web .scp_conv_mode::after,.b_active#b-scopeListItem-web .scp_conv_mode::after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}#b-scopeListItem-menu .b_sp_over_menu .b_scopebar_item{padding:0 0 0 10px}#b-scopeListItem-menu .b_sp_over_menu .b_scopebar_item a{text-transform:uppercase}.b_scopebar #b-scopeListItem-menu .b_sp_over_menu{margin:5px 0 0 14px;height:auto}.b_scopebar>ul li.b_hide{display:none}#b-scopeListItem-menu{vertical-align:initial;line-height:0;padding:3px 5px 0 5px;height:100%}#b-scopeListItem-menu svg{height:28px;width:18px;fill:#444;cursor:pointer}.b_scopebar.b_scope_dropdown_expanded{z-index:3}#b-scopeListItem-menu.focusin .b_sp_over_menu{transform:none;display:block;z-index:1002}#b-scopeListItem-menu .b_sp_over_menu{color:#444;cursor:pointer;transform:scale(0);display:none;position:absolute;background-color:#fff;border-radius:6px;padding:4px 0;margin:18px 0 0 -17px;box-shadow:0 4px 12px 1px rgba(0,0,0,.14);height:auto;overflow-y:unset;min-width:120px}#b-scopeListItem-menu .b_sp_over_item{font-weight:normal;font-size:13px;color:#444;text-align:left;padding:0 0 0 12px;margin:0;display:list-item}#b-scopeListItem-menu li.b_sp_over_item:hover{background:#f5f5f5;color:#111;border-bottom:none}#b-scopeListItem-menu .b_sp_over_item.divider{border-top:1px solid #ddd}#b-scopeListItem-menu .b_sp_over_item a{display:inline-block;width:100%;height:100%;padding:0;line-height:39px;text-transform:none}.b_sp_over_item .icon{background-repeat:no-repeat;background-size:1350%}.b_sp_over_item .icon{display:inline-block;vertical-align:middle;margin-right:12px;height:16px;width:16px}.b_sp_over_item .text{display:inline-block;vertical-align:middle}.b_sp_over_menu #outlook .icon{background-position:-50px 0}.b_sp_over_menu #excel .icon{background-position:0 0}.b_sp_over_menu #word .icon{background-position:-117px 0}.b_sp_over_menu #powerpoint .icon{background-position:-67px 0}.b_sp_over_menu #onenote .icon{background-position:-33px 0}.b_sp_over_menu #onedrive .icon{background-position:-16px 0}.b_sp_over_menu #sway .icon{background-position:-167px 0}.b_sp_over_menu #calendar .icon{background-position:-183px 0}.b_sp_over_menu #people .icon{background-position:-200px 0}.b_sp_over_item .icon{background-image:url(/rp/4HbL1kafp7kZCaGRQ_5yOMfALrQ.png)}.b_scopebar #b-scopeListItem-menu{padding:3px 0;line-height:30px;height:auto}.b_scopebar li:hover:not(.b_active)#b-scopeListItem-menu{border-bottom:none}.b_scopebar #b-scopeListItem-menu .b_sp_over_menu{margin:5px 0 0 14px}#b-scopeListItem-menu .b_sp_over_menu .b_scopebar_item a{font-size:11px}.b_scopebar #b-scopeListItem-menu svg{width:16px;height:16px;display:block}.b_scopebar #b-scopeListItem-menu .b_sp_menu_separ{width:16px;height:15px;display:inline-block;vertical-align:text-bottom}body:not(.b_sydConvMode) nav.b_scopebar li#b-scopeListItem-notebook{display:none}.b_sydConvMode nav.b_scopebar li#b-scopeListItem-notebook{display:inline-block;visibility:visible;opacity:1}.b_sydConvMode nav.b_scopebar li#b-scopeListItem-notebook svg{margin-right:8px;transform:translateY(5px);fill:#174ae4}nav.b_scopebar li.b_active#b-scopeListItem-notebook::after{opacity:0}.b_sydConvMode.b_notebookMode .b_sydShowConv nav.b_scopebar li#b-scopeListItem-notebook::after{opacity:1}.b_sydConvMode.b_notebookMode .b_sydShowConv nav.b_scopebar #b-scopeListItem-conv::after{opacity:0}.b_sydConvMode.b_notebookMode #b_bceBcbToggle .selected{pointer-events:auto}.tools_scope a{border-radius:20px;padding:0 12px}.tools_scope:not(.active):hover a{background-color:#ececec}.b_dark .tools_scope:not(.active):hover a{background-color:#323130}.tools_scope.active a{background:#e2e9ff;color:#174ae4;font-weight:700}.b_dark .tools_scope.active a{background:#a2b7f4;color:#1b1a19}.b_scopebar li.tools_scope:hover{border-bottom-color:transparent}</style><style type=\"text/css\">.hasmic .mic_cont.partner{display:inline-block}.mic_cont.partner{margin:0 0 5px 18px}.b_deep ul{width:230px}#b_results{width:648px}html body,body #b_header{min-width:var(--bminwidth,1362px)}#b_context{width:432px}.b_poleContent{width:1160px}@media(max-width:1406.9px){#b_content{--rgutter:40px;--crleft:848px}}@media(max-width:883.9px){#b_content{--rgutter:20px;--crleft:828px}}@media(max-width:1362.9px){body{--bminwidth:1232px}#b_context{width:344px}.b_poleContent{width:1072px}#id_h #id_rbh,#idCont #id_h #id_rbh{display:none}}@media(max-width:1274.9px){body{--bminwidth:1164px}#b_context{width:256px}#b_header #id_h{right:0}#id_h #id_rh,#id_h #id_rbh{padding-left:8px}.b_poleContent{width:1004px}}@media(max-width:1189.9px){body.b_norr #id_h #id_n{display:none}body.b_norr{--bminwidth:1084px}}@media(max-width:838.9px){.b_respl #b_content{--lgutter:113px;--lgutterrev:-113px;--polepadl:133px;--polepadl2:133px;--dtabpadl:125px;--crleft:801px;--bzaimgoffsetx:-50px}}@media(max-width:791.9px){.b_respl #b_content{--lgutter:66px;--lgutterrev:-66px;--polepadl:86px;--polepadl2:86px;--dtabpadl:62px;--crleft:754px;--bzaimgoffsetx:-97px}}@media(max-width:743.9px){.b_respl #b_content{--lgutter:18px;--lgutterrev:-18px;--polepadl:38px;--polepadl2:38px;--dtabpadl:12px;--crleft:706px;--bzaimgoffsetx:-145px}}</style><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\nvar amd,define,require;(function(n){function e(n,i,u){t[n]||(t[n]={dependencies:i,callback:u},r(n))}function r(n){if(n){if(n)return u(n)}else{if(!f){for(var r in t)u(r);f=!0}return i}}function u(n){var s,e;if(i[n])return i[n];if(t.hasOwnProperty(n)){var h=t[n],f=h.dependencies,l=h.callback,a=r,o={},c=[a,o];if(f.length<2)throw\"invalid usage\";else if(f.length>2)for(s=f.slice(2,f.length),e=0;e<s.length;e++)c.push(u(s[e]));return l.apply(this,c),i[n]=o,o}}var t={},i={},f=!1;n.define=e;n.require=r})(amd||(amd={}));define=amd.define;require=amd.require;var _w=window,_d=document,sb_ie=window.ActiveXObject!==undefined,sb_i6=sb_ie&&!_w.XMLHttpRequest,_ge=function(n){return _d.getElementById(n)},_qs=function(n,t){return t=typeof t==\"undefined\"?_d:t,t.querySelector?t.querySelector(n):null},sb_st=function(n,t){return setTimeout(n,t)},sb_rst=sb_st,sb_ct=function(n){clearTimeout(n)},sb_gt=function(){return(new Date).getTime()},sj_gx=function(){return sb_i6?new ActiveXObject(\"MSXML2.XMLHTTP\"):new XMLHttpRequest};_w.sj_ce=function(n,t,i){var r=_d.createElement(n);return t&&(r.id=t),i&&(r.className=i),r};_w.sj_cook=_w.sj_cook||{get:function(n,t){var i=_d.cookie.match(new RegExp(\"\\\\b\"+n+\"=[^;]+\")),r;return t&&i?(r=i[0].match(new RegExp(\"\\\\b\"+t+\"=([^&]*)\")),r?r[1]:null):i?i[0]:null}};_w.sk_merge||(_w.sk_merge=function(n){_d.cookie=n});_w.bbe=\"A:rms:answers:Shared:BingCore.Bundle\";define(\"fallback\",[\"require\",\"exports\"],function(n,t){function f(){return function(){for(var r,h,c,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(r=s(arguments.callee),u&&(h=e(r),h.toString()!=f().toString()))return h.apply(null,arguments);c=i[r].q;t[0]===\"onPP\"&&o();c.push(t)}}function s(n){for(var t in i)if(i[t].h===n)return t}function e(n,t){for(var u,e=n.split(\".\"),i=_w,r=0;r<e.length;r++)u=e[r],typeof i[u]==\"undefined\"&&t&&(i[u]=r===e.length-1?f():{}),i=i[u];return i}function o(){var e=i[\"rms.js\"].q,o,f,r,n,s,u,t;if(e.length>0)for(o=!1,f=0;f<e.length;f++){for(r=e[f],n=0;n<r.length;n++)if(s=_w.bbe,u=r[n][s],u||(u=r[n][\"A:rmsBu0\"]),u){t=_d.createElement(\"script\");t.setAttribute(\"data-rms\",\"1\");t.setAttribute(\"crossorigin\",\"anonymous\");t.src=u;t.type=\"text/javascript\";setTimeout(function(){_d.body.appendChild(t)},0);r.splice(n,1);o=!0;break}if(o)break}}function h(){var n,t,f;for(u=!1,n=0;n<r.length;n++)t=r[n],f=e(t,!0),i[t]={h:f,q:[]}}function c(){for(var t,n=0;n<r.length;n++){var o=r[n],s=i[o].q,h=e(o);for(t=0;t<s.length;t++)h.toString()!==f().toString()&&h.apply(null,s[t])}u=!0}function l(n,t,i,r){n&&((n===_w||n===_d||n===_d.body)&&t==\"load\"?_w.sj_evt.bind(\"onP1\",i,!0):n.addEventListener?n.addEventListener(t,i,r):n.attachEvent?n.attachEvent(\"on\"+t,i):n[\"on\"+t]=i)}t.__esModule=!0;t.replay=void 0;var r=[\"rms.js\",\"sj_evt.bind\",\"sj_evt.fire\",\"sj_jb\",\"sj_wf\",\"sj_cook.get\",\"sj_cook.set\",\"sj_pd\",\"sj_sp\",\"sj_be\",\"sj_go\",\"sj_ev\",\"sj_ue\",\"sj_evt.unbind\",\"sj_et\",\"Log.Log\",\"sj_mo\",\"sj_so\"],i={},u=!1;_w.fb_is=o;t.replay=c;h();_w.sj_be=l});function lb(){_w.si_sendCReq&&sb_st(_w.si_sendCReq,800);_w.lbc&&_w.lbc()};(function(){function n(n){n=sb_ie?_w.event:n;(!n.altKey||n.ctrlKey||n.shiftKey)&&(n.key&&n.key===\"Enter\"||n.keyCode&&n.keyCode===13)&&_w.si_ct(sb_ie?n.srcElement:n.target,!1,n,\"enter\")}sj_be(document,\"keydown\",n,!1)})();(function(){function n(n){_w.si_ct(sb_ie?_w.event.srcElement:n.target,!1,_w.event||n);sj_evt&&sj_evt.fire(\"cbksent\",n)}sj_be(document,\"mousedown\",n,!1);sj_evt.bind(\"sydFSCLoaded\",function(){var t;((t=CIB===null||CIB===void 0?void 0:CIB.config)===null||t===void 0?void 0:t.bing)&&(CIB.config.bing.sendClickBeacon=n)},!0)})();_w.si_sbwu=function(n){var r=_G.BQIG==null?_G.IG:_G.BQIG,u=\"/fd/ls/GLinkPingPost.aspx?IG=\"+r+n,t=\"sendBeacon\",i=!1;if(navigator&&navigator[t])try{navigator[t](u,\"\");i=!0}catch(f){}return i};ClTrCo={furl:!0};var ctcc=0,clc=_w.ClTrCo||{};_w.si_ct=function(n,t,i,r){var u,o,e,s,f,a,h,c,l;if(clc.SharedClickSuppressed)return!0;u=\"getAttribute\";try{for(;n!==document.body;n=n.parentNode){if(!n||n===document||n[u](\"data-noct\"))break;if(o=(n.tagName===\"A\"||n[u](\"data-clicks\"))&&(n[u](\"h\")||n[u](\"data-h\")||n[u](\"data-cspi\"))||n[u](\"_ct\"),o){e=n[u](\"_ctf\");s=-1;i&&(i.type===\"keydown\"?s=-2:i.button!=null&&(s=i.button));e&&_w[e]||(e=\"si_T\");e===\"si_T\"&&(f=n[u](\"href\"),_G!==undefined&&_G.EF!==undefined&&_G.EF.newtabredironclicktracking===1&&f.indexOf(\"/newtabredir\")==0?(a=new RegExp(\"[?&]?url=([^&]*)(&|$)\"),h=f.match(a),h&&(f=f.indexOf(\"&be=1\")>=0?encodeURIComponent(atob(decodeURIComponent(h[1]))):h[1])):f=encodeURIComponent(n[u](\"href\")),clc.furl&&!n[u](\"data-private\")?o+=\"&url=\"+f:clc.mfurl&&(o+=\"&abc=\"+f));r&&(o+=\"&source=\"+r);c=\"\";clc.mc&&(c=\"&c=\"+ctcc++);l=\"&\"+o+c;_w.si_sbwu(l)||_w[e]&&_w[e](l,n,i,s);break}if(t)break}}catch(v){_w.SharedLogHelper?SharedLogHelper.LogWarning(\"clickEX\",null,v):(new Image).src=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{\"T\":\"CI.Warning\",\"FID\":\"CI\",\"Name\":\"JSWarning\",\"Text\":'+v.message+\"}]\"}return!0};_w.si_sbwu||(_w.si_sbwu=function(){return!1}),function(){_w._G&&(_G.si_ct_e=\"click\")}();var wlc_d = 1500, wlc_t =63846123522;;var perf;(function(n){function f(n){return i.hasOwnProperty(n)?i[n]:n}function e(n){var t=\"S\";return n==0?t=\"P\":n==2&&(t=\"M\"),t}function o(n){for(var c,i=[],t={},r,l=0;l<n.length;l++){var a=n[l],o=a.v,s=a.t,h=a.k;s===0&&(h=f(h),o=o.toString(36));s===3?i.push(\"\".concat(h,\":\").concat(o)):(r=t[s]=t[s]||[],r.push(\"\".concat(h,\":\").concat(o)))}for(c in t)t.hasOwnProperty(c)&&(r=t[c],i.push(\"\".concat(e(+c),':\"').concat(r.join(\",\"),'\"')));return i.push(u),i}for(var r=[\"redirectStart\",\"redirectEnd\",\"fetchStart\",\"domainLookupStart\",\"domainLookupEnd\",\"connectStart\",\"secureConnectionStart\",\"connectEnd\",\"requestStart\",\"responseStart\",\"responseEnd\",\"domLoading\",\"domInteractive\",\"domContentLoadedEventStart\",\"domContentLoadedEventEnd\",\"domComplete\",\"loadEventStart\",\"loadEventEnd\",\"unloadEventStart\",\"unloadEventEnd\",\"firstChunkEnd\",\"secondChunkStart\",\"htmlEnd\",\"pageEnd\",\"msFirstPaint\"],u=\"v:1.1\",i={},t=0;t<r.length;t++)i[r[t]]=t;n.compress=o})(perf||(perf={}));window.perf=window.perf||{},function(n){n.log=function(t,i){var u=n.compress(t),e,r;u.push('T:\"CI.Perf\",FID:\"CI\",Name:\"PerfV2\"');var s=\"/fd/ls/lsp.aspx?\",h=\"sendBeacon\",f=_w.ChatMergeLogHelper;typeof f!=\"undefined\"&&typeof f.getBotRequestId==\"function\"&&(e=f.getBotRequestId(),e&&u.push('rid:\"'.concat(e,'\"')));var l=\"<E><T>Event.ClientInst<\\/T><IG>\".concat(_G.IG,\"<\\/IG><TS>\").concat(i,\"<\\/TS><D><![CDATA[{\").concat(u.join(\",\"),\"}]\\]><\\/D><\\/E>\"),c=\"<ClientInstRequest><Events>\".concat(l,\"<\\/Events><STS>\").concat(i,\"<\\/STS><\\/ClientInstRequest>\"),o=!_w.navigator||!navigator[h];if(!o)try{navigator[h](s,c)}catch(a){o=!0}o&&(r=sj_gx(),r.open(\"POST\",s,!0),r.setRequestHeader(\"Content-Type\",\"text/xml\"),r.send(c))}}(window.perf);var perf;(function(n){function a(){return c(Math.random()*1e4)}function o(){return y?c(f.now())+l:+new Date}function v(n,r,f){t.length===0&&i&&sb_st(u,1e3);t.push({k:n,v:r,t:f})}function p(n){return i||(r=n),!i}function w(n,t){t||(t=o());v(n,t,0)}function b(n,t){v(n,t,1)}function u(){var u,f;if(t.length){for(u=0;u<t.length;u++)f=t[u],f.t===0&&(f.v-=r);t.push({k:\"id\",v:e,t:3});n.log(t,o());t=[];i=!0}}function k(){r=o();e=a();i=!1;sj_evt.bind(\"onP1\",u)}var s=\"performance\",h=!!_w[s],f=_w[s],y=h&&!!f.now,c=Math.round,t=[],i=!1,l,r,e;h?l=r=f.timing.navigationStart:r=_w.si_ST?_w.si_ST:+new Date;e=a();n.setStartTime=p;n.mark=w;n.record=b;n.flush=u;n.reset=k;sj_be(window,\"load\",u,!1);sj_be(window,\"beforeunload\",u,!1)})(perf||(perf={}));_w.si_PP=function(n,t,i){var r,o,a,h,e,c,l,v;if(!_G.PPS){for(o=[\"FC\",\"BC\",\"SE\",\"TC\",\"H\",\"BP\",null];r=o.shift();)o.push('\"'+r+'\":'+(_G[r+\"T\"]?_G[r+\"T\"]-_G.ST:-1));var u=_w.perf,s=\"navigation\",r,f=i||_w.performance&&_w.performance.timing;if(f&&u){if(a=f.navigationStart,u.setStartTime(a),a>=0){for(r in f)h=f[r],typeof h==\"number\"&&h>0&&r!==\"navigationStart\"&&r!==s&&u.mark(r,h);_G.FCT&&u.mark(\"FN\",_G.FCT);_G.BCT&&u.mark(\"BN\",_G.BCT)}u.record(\"nav\",s in f?f[s]:performance[s].type)}e=\"connection\";c=\"\";_w.navigator&&navigator[e]&&(c=',\"net\":\"'.concat(navigator[e].type,'\"'),navigator[e].downlinkMax&&(c+=',\"dlMax\":\"'.concat(navigator[e].downlinkMax,'\"')));l=_w.ChatMergeLogHelper;typeof l!=\"undefined\"&&typeof l.getBotRequestId==\"function\"&&(v=l.getBotRequestId());_G.PPImg=new Image;_G.PPImg.src=_G.lsUrl+'&Type=Event.CPT&DATA={\"pp\":{\"S\":\"'+(t||\"L\")+'\",'+o.join(\",\")+',\"CT\":'+(n-_G.ST)+',\"IL\":'+_d.images.length+\"}\"+(_G.C1?\",\"+_G.C1:\"\")+c+\"}\"+(_G.P?\"&P=\"+_G.P:\"\")+(_G.DA?\"&DA=\"+_G.DA:\"\")+(_G.MN?\"&MN=\"+_G.MN:\"\")+(v?\"&rid=\"+v:\"\");_G.PPS=1;sb_st(function(){u&&u.flush();sj_evt.fire(\"onPP\");sj_evt.fire(_w.p1)},1)}};_w.onbeforeunload=function(){si_PP(new Date,\"A\")};sj_evt.bind(\"ajax.requestSent\",function(){window.perf&&perf.reset()});var FRPMetricModule;(function(){var t=!1,i,n;typeof PerformanceObserver!=\"undefined\"&&typeof PerformanceObserver==\"function\"&&(i=PerformanceObserver.supportedEntryTypes||[],i.indexOf(\"element\")>=0&&(n=new PerformanceObserver(function(i){i.getEntries().forEach(function(i){var r,u,f;typeof _w.frpPreviousEntry==\"undefined\"&&(_w.frpPreviousEntry=i);((r=i===null||i===void 0?void 0:i.identifier)===null||r===void 0?void 0:r.length)>0&&(u=i.identifier,u.startsWith(\"frp\")&&u!==\"frp.SearchBox\"&&(f=Math.round(Math.min(_w.frpPreviousEntry.renderTime,i.renderTime)),_G.frp=f,_w.perf&&!t&&(_w.perf.record&&_w.perf.record(\"FRP\",f),t=!0),n&&t&&n.disconnect()))})}),n.observe({entryTypes:[\"element\"]})))})(FRPMetricModule||(FRPMetricModule={}));var sj_log=function(n,t,i){var e=new RegExp('\"',\"g\"),r=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{\"T\":\"'+n+'\",\"FID\":\"CI\",\"Name\":\"'+t+'\",\"Text\":\"'+escape(i.replace(e,\"\")),u=_w.ChatMergeLogHelper,f;typeof u!=\"undefined\"&&typeof u.getBotRequestId==\"function\"&&(f=u.getBotRequestId(),f&&(r+='\",\"rid\":\"'+f));r+='\"}]';(new Image).src=r};var BM=BM||{},adrule=\".\"+_G.adc+\" > ul\";BM.rules={\".b_scopebar\":[0,80,0],\".b_logo\":[-1,-1,0],\".b_searchboxForm\":[100,19,0],\"#id_h\":[-1,-1,0],\"#b_tween\":[-1,-1,1],\"#b_results\":[100,-1,1],\"#b_pole\":[-1,-1,1],\"#b_topw\":[-1,-1,0],\"#b_context\":[710,-1,1],\"#b_navheader\":[-1,-1,0],\"#bfb-answer\":[-1,-1,1],\".tab-menu > ul\":[-1,-1,1],\".b_footer\":[0,-1,0],\"#b_notificationContainer\":[-1,-1,0],\"#ajaxMaskLayer\":[-1,-1,0],\"img,div[data-src],.rms_img\":[-1,-1,0],iframe:[-1,-1,0]};BM.rules[adrule]=[-1,-1,1];var BM=BM||{};(function(n){function u(n,u){n in t||(t[n]=[]);!u.compute||n in r||(r[n]=u.compute);!u.unload||n in i||(i[n]=u.unload);u.load&&u.load()}function f(n,i){t[n].push({t:s(),i:i})}function e(n){return n in i&&i[n](),n in t?t[n]:void 0}function o(){for(var n in r)r[n]()}function s(){return window.performance&&performance.now?Math.round(performance.now()):new Date-window.si_ST}var t={},i={},r={};n.wireup=u;n.enqueue=f;n.dequeue=e;n.trigger=o})(BM);(function(n){function i(){var i=document.documentElement,r=document.body,u=\"innerWidth\"in window?window.innerWidth:i.clientWidth,f=\"innerHeight\"in window?window.innerHeight:i.clientHeight,e=window.pageXOffset||i.scrollLeft,o=window.pageYOffset||i.scrollTop,s=document.visibilityState||\"default\";n.enqueue(t,{x:e,y:o,w:u,h:f,dw:r.clientWidth,dh:r.clientHeight,v:s})}var t=\"V\";n.wireup(t,{load:null,compute:i,unload:null})})(BM);(function(n){function i(){var e,o,u,s,f,r;if(document.querySelector&&document.querySelectorAll){e=[];o=n.rules;for(u in o)for(s=o[u],u+=!s[2]?\"\":\" >*\",f=document.querySelectorAll(u),r=0;r<f.length;r++){var i=f[r],h=0,c=0,l=i.offsetWidth,a=i.offsetHeight;do h+=i.offsetLeft,c+=i.offsetTop;while(i=i.offsetParent);e.push({_e:f[r],x:h,y:c,w:l,h:a})}n.enqueue(t,e)}}var t=\"L\";n.wireup(t,{load:null,compute:i,unload:null})})(BM);(function(n){function f(){u(sj_be,r)}function r(i){return i&&n.enqueue(t,i),!0}function e(){u(sj_ue,r)}function u(n,t){for(var u,r=0;r<i.length;r++)u=i[r],n(u===\"resize\"?window:document,window.navigator.pointerEnabled?u.replace(\"mouse\",\"pointer\"):u,t,!1)}var t=\"EVT\",i=[\"click\",\"mousedown\",\"mouseup\",\"touchstart\",\"touchend\",\"mousemove\",\"touchmove\",\"scroll\",\"keydown\",\"resize\"];n.wireup(t,{load:f,compute:null,unload:e})})(BM);FallBackToDefaultProfilePic = function (e) { var new_element = document.createElement('span'); new_element.setAttribute('id', 'id_p'); new_element.setAttribute('class', 'sw_spd id_avatar'); new_element.setAttribute('aria-label', \"Default Profile Picture\"); new_element.setAttribute('role', 'link'); var p = e.parentNode; p && p.replaceChild(new_element, e); };var _d,sb_de;typeof _d==\"undefined\"&&(_d=document);sb_de=_d.documentElement;\n//]]></script></head><body class=\"b_respl\"><header id=\"b_header\" role=\"banner\" class=\"\"><a id=\"b_skip_to_content\" data-priority=\"2\" href=\"#\" role=\"button\" tabindex=\"0\"><div class=\"text-back\"><div class=\"text\" href=\"#\">Skip to content</div></div></a><form action=\"/search\" id=\"sb_form\" class=\"hassbi hasmic\"><a class=\"b_logoArea\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f8f2368f437d7f27JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA0NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1Lz9GT1JNPVo5RkQx&amp;ntb=1\" h=\"ID=SERP,5044.1\"><h1 class=\"b_logo\" title=\"Back to Bing search\"></h1></a><div class=\"b_searchboxForm\" role=\"search\"><div id=\"sb_search\"><a tabindex=\"-1\" href=\"javascript:void(0);\" h=\"ID=SERP,5045.1\"><div id=\"sb_go_par\"  data-sbtip='Search the web' ><div id=\"b_icon_spyglass\" class=\"sb_icon\"></div><input type=\"submit\" class=\"b_searchboxSubmit\" id=\"sb_form_go\" tabIndex=\"0\" name=\"go\" value=\"Search\" /></div></a></div><div class=\"qfc  b_searchbox  b_softkey\" aria-live=\"polite\"><div class=\"user-prefix\">Microsoft wikipedia</div><div class=\"ghost\" aria-hidden=\"true\"></div><button class=\"nudge\" aria-hidden=\"true\" tabindex=\"-1\">Tab</button></div><textarea class=\"b_searchbox  b_softkey\" id=\"sb_form_q\" name=\"q\"\n                                              enterkeyhint=\"\"\n                                              rows=\"1\" data-min-rows=\"1\" aria-autocomplete=\"both\" aria-label=\"Enter your search here - Search suggestions will show as you type\" type=\"search\" inputMode=\"search\" value=\"Microsoft wikipedia\"\n                                              maxlength=\"2000\"\n                                              dir=\"\" autocapitalize=\"off\" autocorrect=\"off\" autocomplete=\"off\" spellcheck=\"false\"\n                                              placeholder=\"Ask me anything...\">Microsoft wikipedia</textarea><div id=\"sb_clt\" class=\"sb_clrhov\" data-second-sbtipx=\"Clear\" data-sbtipx=\"Clear\"><a id=\"sw_clx\" data-second-href=javascript:void(0) tabindex=\"0\" aria-label=\"Clear text\" role=\"button\"><div class=\"sw_close\"></div></a></div><span id=\"vkeyIcon\" data-sbtip=\"Search using an on-screen keyboard\"><div id=\"b_icon_keyboard\" class=\"sb_icon\"></div></span><div id=\"mic_cont_icon\" class=\"mic_cont icon partner\" data-preload=true><div id=\"vs_mic_icon\" class=\"mic_icon sb_icon disabled\"></div><div class=\"ovr_cont\"></div></div><div id=\"sbiarea\" data-idprefix=\"sb\" data-ptn=\"\"><div id=\"sb_sbip\" data-sbtip=\"Search using an image\" data-lgdgevt=\"0\"><div id=\"sb_sbi\" tabindex=\"0\" role=\"button\" data-scrtl=\"1\"\n                             aria-label=\"Search using an image\"><div id=\"sbi_b\" class=\"sb_icon disabled\"></div></div></div></div><div id=\"sbicom_loader\" style=\"display:none\" data-ptn=\"Web\" data-iid=\".5099\" data-evt=\"\" data-ep=\"0\" data-iconpl=\"1\"></div><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\n{ const icon = _ge(\"sb_sbi\"); if (icon) { icon.addEventListener(\"click\", function() { SBI.IconLoader.handleIconClick(icon); }); } };(function(){var n=_ge(\"sb_form_q\"),t=function(t){var i;if((t.code===\"Enter\"||t.keyCode===13)&&!t.isComposing)return n.readOnly=!0,(i=n.form)===null||i===void 0?void 0:i.submit(),!1};n&&(n.addEventListener(\"keydown\",t),sj_evt&&sj_evt.bind(\"AS.BindKeyDown\",function(){n.removeEventListener(\"keydown\",t)}))})();var img_p = document.getElementById('id_p'); img_p && img_p.addEventListener('error', function() {FallBackToDefaultProfilePic(img_p) });;\n//]]></script><input id=\"sa_qs\" name=\"qs\" value=\"ds\" type=\"hidden\" /><input type=\"hidden\" value=\"QBRE\" name=\"form\" /><div id=\"sb_toolbar\" class=\"b_hide\"><div id=\"sb_chcounter_r\" class=\"b_hide\"></div><div id=\"sb_expand_r\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-alt=\"Push Pin Icon\" data-id=\"push_pin\" data-height=\"16\" data-width=\"16\" data-class=\"rms_img\" data-src=\"https://r.bing.com/rp/NbA_o5_JH0GEi8eQ-UOtARHo4pE.svg\"></div></div><div id=\"sb_collapes_r\" class=\"b_hide\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-alt=\"Filled Push Pin Icon\" data-id=\"push_pin_filled\" data-height=\"16\" data-width=\"16\" data-class=\"rms_img\" data-src=\"https://r.bing.com/rp/Dl3Mgy5b8mZk0rO25YbvLM3bp7Q.svg\"></div></div></div></div><a class=\"b_phead_chat_link\" tabindex=\"-1\" href=\"javascript:void(0);\" h=\"ID=SERP,5046.1\"><div id=\"b_phead_chat\" role=\"button\" aria-label=\"Chat\" title=\"Chat with Copilot\" data-priority=\"2\" className=\"b_hide\"><div id=\"chat_upsell_bubble_icon\" class=\"b_hide\"></div></div></a></form><div id=\"id_h\" role=\"complementary\" aria-label=\"Account Rewards and Preferences\" data-priority=\"2\"><a id=\"id_l\" class=\"id_button\" aria-haspopup=\"true\" aria-controls=\"id_d\" aria-expanded=\"false\" data-clarity-mask=\"true\" href=\"javascript:void(0);\" h=\"ID=SERP,5051.1\"><div>  <span id=\"B9961D_1_btn\" class=\"cbtn\" data-wire=\"I;button_init;; |\" data-appns=\"SERP\" data-k=\"5102.1\"><input type=\"submit\" name=\"submit\" id=\"id_a\" value=\"Sign in\" aria-label=\"\"/></span></div><span id=\"id_n\" style=\"display:none\" aria-hidden=\"true\"></span><img id=\"id_p\" class=\"id_avatar sw_spd\" role=\"presentation\" style=\"display:none\" alt=\"Profile Picture\" onError=\"\" data-src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" data-alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=\"/><div id=\"id_linkicon\"\n style=\"position:relative;vertical-align:top;margin-right:-10px;right:10px;display:none\"><svg class=\"id_linkicon_svg\" style=\"width:16px;height:16px;vertical-align:top;margin-top:27px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 20 20\"><g filter=\"url(#a)\"><circle cx=\"10\" cy=\"9\" r=\"8\" fill=\"#fff\" /></g><path fill=\"#767676\" d=\"M8.2 6a.6.6 0 0 1 .07 1.196L8.2 7.2H7a1.8 1.8 0 0 0-.106 3.597L7 10.8h1.2a.6.6 0 0 1 .07 1.196L8.2 12H7a3 3 0 0 1-.13-5.997L7 6h1.2ZM13 6a3 3 0 0 1 .13 5.997L13 12h-1.2a.6.6 0 0 1-.07-1.196l.07-.004H13a1.8 1.8 0 0 0 .106-3.597L13 7.2h-1.2a.6.6 0 0 1-.07-1.196L11.8 6H13ZM7 8.4h6a.6.6 0 0 1 .07 1.196L13 9.6H7a.6.6 0 0 1-.07-1.196L7 8.4h6-6Z\" /><defs><filter id=\"a\" width=\"20\" height=\"20\" x=\"0\" y=\"0\" color-interpolation-filters=\"sRGB\" filterUnits=\"userSpaceOnUse\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" /><feColorMatrix in=\"SourceAlpha\" result=\"hardAlpha\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" /><feOffset dy=\"1\" /><feGaussianBlur stdDeviation=\"1\" /><feComposite in2=\"hardAlpha\" operator=\"out\" /><feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0\" /><feBlend in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1352_97902\" /><feBlend in=\"SourceGraphic\" in2=\"effect1_dropShadow_1352_97902\" result=\"shape\" /></filter></defs></svg></div></a><span id=\"id_d\" _iid=\"SERP.5070\"></span><a class=\"id_button toolTip\" id=\"id_rh\" aria-label=\"Microsoft Rewards \" role=\"button\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"bepfo\" href=\"javascript:void(0)\" h=\"ID=SERP,5059.1\"><span id=\"id_rc\" class=\"serp\">Rewards</span><span id=\"rewards_header_icon serp\" class=\"rwds_svg serp pc\"><span class=\"rhlined serp\"></span><span class=\"rhfill serp\"></span><svg xmlns=\"http://www.w3.org/2000/svg\" id=\"rh_meter\"><circle cx=\"20\" cy=\"20\" r=\"14\" id=\"rh_animcrcl\" class=\"serp\" stroke-dasharray=\"88, 88\" transform=\"rotate(-90,20,20)\"></circle></svg></span></a><a class=\"b_hide\" id=\"id_rwl\" data-title=\"Microsoft Rewards\" href=\"/rewards/dashboard\" h=\"ID=SERP,5058.1\"></a><span id=\"nc_iid\" _IG=\"7DE503E4162940FA9A03BF17C440033D\" _iid=\"SERP.5057\"></span><a class=\"id_button serp reverse\" id=\"id_rbh\" aria-label=\"Microsoft Cashback\" role=\"link\" style=\"display:none\" href=\"/rebates/payouts\" h=\"ID=SERP,5063.1\"><span id=\"id_rbc\" class=\"serp\"></span><span id=\"id_rb_icon\" class=\"rwds_svg serp\"><svg width=\"21\" viewBox=\"0 0 21 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m14.5 14.3.8.6-.8-.6Zm4-7.5.8-.7-.7.7Zm0 2.4-.7-.6.8.6ZM13 1v1-1Zm1.5.7-.8.7.8-.7ZM3 2h10V0H3v2Zm10.7.4 4 5L19.4 6l-4-5-1.6 1.3Zm4 6.2-4 5 1.6 1.3 4-5-1.5-1.3ZM13 14H3v2h10v-2ZM2 13V3H0v10h2Zm1 1a1 1 0 0 1-1-1H0a3 3 0 0 0 3 3v-2Zm10.7-.4a1 1 0 0 1-.7.4v2a3 3 0 0 0 2.3-1.1l-1.6-1.3Zm4-6.2c.4.3.4.9 0 1.2l1.6 1.3a3 3 0 0 0 0-3.8l-1.5 1.3ZM13 2c.3 0 .6.1.7.4L15.3 1A3 3 0 0 0 13 0v2ZM3 0a3 3 0 0 0-3 3h2c0-.6.4-1 1-1V0ZM9.4 9.8c0-.3 0-.5-.2-.6a2 2 0 0 0-.7-.5 15 15 0 0 1-1-.4l-.8-.5a2 2 0 0 1-.5-.7L6 6c0-.5.2-1 .7-1.4.4-.4 1-.7 1.6-.7V2.8H9V4c.7.1 1.2.4 1.6.8.4.5.5 1 .5 1.7H9.4c0-.4 0-.7-.2-.9a.7.7 0 0 0-.6-.3c-.2 0-.4.1-.5.3-.2.1-.2.3-.2.6 0 .2 0 .5.2.6.1.2.4.3.7.5.3 0 .7.2 1 .4l.7.5.5.7.2 1a2 2 0 0 1-.6 1.4c-.4.4-.9.6-1.6.7v1h-.8v-1c-.8-.1-1.4-.4-1.8-.8-.4-.5-.6-1-.6-1.8h1.8c0 .4 0 .7.2 1l.8.2c.3 0 .4 0 .6-.2l.2-.6Z\" /></svg></span></a><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\nvar logJSText=function(n,t){t===void 0&&(t=null);(new Image).src=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{\"T\":\"CI.ClientInst\",\"FID\":\"CI\",\"Name\":\"'+escape(n)+(t?'\",\"Text\":\"'+escape(t):\"\")+'\"}]'},getHref=function(){return location.href};try{var ignErr=[\"ResizeObserver loop completed with undelivered notifications.\",\"ResizeObserver loop limit exceeded\"],rszMsg=\"ResizeObserverLimit\",maxErr=3,isIgnErr=function(n,t,i){return(t===void 0&&(t=null),i===void 0&&(i=!0),ignErr.indexOf(n)<0)?!1:(i==!0&&logJSText(rszMsg),t!=null&&(sj_sp(t),sj_pd(t)),!0)},regexEsc=function(n){return n.replace(/([.?*+^$&[\\]\\\\(){}|<>-])/g,\"\\\\$1\")},FireInstrumError=function(n){typeof sj_evt!=\"undefined\"&&sj_evt.fire(\"ErrorInstrumentation\",n)};window.jsErrorHandler=function(n){var h,rt,ut,r,f,ft,e,a,v,o;try{var s='\"noMessage\"',ot=(n.error||n).message||s,p=window.WRC?window.WRC:0;if(isIgnErr(ot,n,p<=maxErr)){window.WRC=p+1;return}if(h=(window.ERC?window.ERC:0)+1,window.ERC=h,h>maxErr){n=new Error(\"max errors reached\");return}var c=n.error||n,w=n.filename,b=n.lineno,k=n.colno,d=n.extra,l=c.severity||\"Error\",g=c.message||s,i=c.stack,t='\"'+escape(g.replace(/\"/g,\"\"))+'\"',nt=new RegExp(regexEsc(getHref()),\"g\"),tt=window.lirab,it=window.liraa,u=tt?\" hint == [\"+tt:\"\";if(u=u+(it?\", \"+it+\")\":u?\"]\":\"\"),i){for(rt=/\\(([^\\)]+):[0-9]+:[0-9]+\\)/g,r={};(ut=rt.exec(i))!==null;)f=ut[1],r[f]?r[f]++:r[f]=1;e=0;for(a in r)r[a]>1&&(v=regexEsc(a),ft=new RegExp(v,\"g\"),i=i.replace(ft,e),i+=\"#\"+e+\"=\"+v,e++);i=i.replace(nt,\"self\").replace(/\"/g,\"\");t+=',\"Stack\":\"'+(escape(i)+'\"')}if(w&&(t+=',\"Meta\":\"'+escape(w.replace(nt,\"self\"))+u+'\"'),b&&(t+=',\"Line\":\"'+b+'\"'),k&&(t+=',\"Char\":\"'+k+'\"'),d&&(t+=',\"ExtraInfo\":\"'+d+'\"'),g===s)if(l=\"Warning\",t+=',\"ObjectToString\":\"'+n.toString()+'\"',JSON&&JSON.stringify)t+=',\"JSON\":\"'+escape(JSON.stringify(n))+'\"';else for(o in n)n.hasOwnProperty(o)&&(t+=',\"'+o+'\":\"'+n[o]+'\"');var et=(new Date).getTime(),st='\"T\":\"CI.'+l+'\",\"FID\":\"CI\",\"Name\":\"JS'+l+'\",\"Text\":'+t+\"\",ht=\"<E><T>Event.ClientInst<\\/T><IG>\"+_G.IG+\"<\\/IG><TS>\"+et+\"<\\/TS><D><![CDATA[[{\"+st+\"}]]\\]><\\/D><\\/E>\",ct=\"<ClientInstRequest><Events>\"+ht+\"<\\/Events><STS>\"+et+\"<\\/STS><\\/ClientInstRequest>\",y=new XMLHttpRequest;y.open(\"POST\",\"/fd/ls/lsp.aspx?\",!0);y.setRequestHeader(\"Content-Type\",\"text/xml\");y.send(ct);FireInstrumError(t)}catch(lt){logJSText(\"MetaJSError\",\"Failed to execute error handler. \"+lt.message)}};window.addEventListener&&window.addEventListener(\"error\",window.jsErrorHandler,!1);window.addEventListener||window.onerror||(window.onerror=function(n,t,i,r,u){var f,e;isIgnErr(n)||(f=\"\",typeof n==\"object\"&&n.srcElement&&n.srcElement.src?f=\"\\\"ScriptSrc = '\"+escape(n.srcElement.src.replace(/'/g,\"\"))+\"'\\\"\":(n=\"\"+n,f='\"'+escape(n.replace(/\"/g,\"\"))+'\",\"Meta\":\"'+escape(t)+'\",\"Line\":'+i+',\"Char\": '+r,u&&u.stack&&(e=new RegExp(regexEsc(getHref()),\"g\"),f+=',\"Stack\":\"'+escape(u.stack.replace(e,\"self\").replace(/\"/g,\"\")+'\"'))),(new Image).src=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{\"T\":\"CI.GetError\",\"FID\":\"CI\",\"Name\":\"JSGetError\",\"Text\":'+f+\"}]\",FireInstrumError(f))})}catch(e){logJSText(\"MetaJSError\",\"Failed to bind error handler \"+e.message)};(function(n){var i,r,t;if(document.querySelector){i=[];r=\"ad\";function u(){var w=sb_gt(),l=document.documentElement,s=document.body,t=0,r=-1,b=l.clientHeight,a=[\"#b_results .\"+_G.adc,\".sb_adsWv2\",\".ads\"],n,f,e,p,c,o,u;if(s){n=0;f=document.querySelector(\"#b_pole .b_PolePAContainer\");f&&(n=f.offsetHeight,r=f.offsetTop);var v=document.querySelector(\"#b_results #productAdCarousel\"),h=document.querySelector(\"#b_results .pa_b_supertop\"),y=document.querySelector(\"#b_results .bn_wide\");for(h?(r=h.offsetTop,n=h.offsetHeight):y?n+=y.offsetHeight:v&&(n+=v.offsetHeight),t=n,e=0;e<a.length;e++)for(p=a[e],c=document.querySelectorAll(p),o=0;o<c.length;o++)u=c[o],u&&u.className.indexOf(\"b_adTop\")!==-1&&(t+=u.offsetHeight,r===-1&&(r=u.offsetTop));t===0&&(t=-1);i=[r,t,l.clientWidth,b,s.offsetWidth,s.offsetHeight,sb_gt()-w]}}n?(t=n.onbeforefire,n.onbeforefire=function(){t&&t();u();n.mark(r,i)}):(t=si_PP,si_PP=function(){u();var n='\"'+r+'\":['+i.join()+\"]\";_G.C1=_G.C1?_G.C1+\",\"+n:n;t.apply(null,[].slice.apply(arguments))})}})(_w.pp);_w.AM=[\"live.com\",\"azureedge.net\",\"virtualearth.net\",\"windows.net\",\"onenote\",\"hexun.com\",\"dict.bing.com.cn\",\"msn.com\",\"variflight.com\",\"bing.net\",\"msftoffers.com\",\"chinacloudapp.cn\",\"cbsnews.com\",\"swx.cdn.skype.com\",\"swc.cdn.skype.com\",\"latest-swx.cdn.skype.com\",\"a.config.skype.com\",\"b.config.skype.com\",\"platform.bing.com\",\"microsofttranslator.com\",\"bing.com\",\"facebook.net\",\".delve.office.com\",\".uservoice.com\",\".cdn.office.net\",\"platform.twitter.com\",\"cdn.syndication.twimg.com\",\"spoprod-a.akamaihd.net\",\"bingstatic.com\",\"yahoo.co.jp\",\"youtube.com\",\"ytimg.com\",\"r.msftstatic.com\",\"rafd.bing.com\",\"rafd.staging-bing-int.com\",\"raka.bing.com\",\"r.bing.com\",\"r.staging-bing-int.com\",\"raka.staging-bing-int.com\",\"rcf.staging-bing-int.com\",\"rcf.bing.com\",\"s.cn.bing.net\",\"xpaycdn-int.azureedge.net\",\"xpaycdn.azureedge.net\",\"ssl.kaptcha.com\",\"tst.kaptcha.com\",\"snrproxy.binginternal.com\",\"snrproxyeast.binginternal.com\",\"snrproxync.binginternal.com\",\"snrproxysc.binginternal.com\",\"snrproxywest.binginternal.com\",\"cetonc.binginternal.com\",\"cetosc.binginternal.com\",\"cetoeast.binginternal.com\",\"cetowest.binginternal.com\",\"akam.bing.com\",\"akam.staging-bing-int.com\",\"ewlmaakam.staging-bing-int.com\",\"akamproxyeast.staging-bing-int.com\",\"akamproxync.staging-bing-int.com\",\"akamproxysc.staging-bing-int.com\",\"akamproxywest.staging-bing-int.com\",\"cjfdbemmaeeohgibnhdhlakiahifjjcf\",\"ewlmaakam.staging-bing-int.com\",\"bngpiglbalmenaabohcooocpnljgfemj\",\"rwww.bing.com\",\"vlscppe.microsoft.com\",\"ov-df.microsoft.com\",\"content.lifecycle.officeppe.net\",\"content.lifecycle.office.net\",\"pmservices.cp.microsoft.com\",\"paymentinstruments.mp.microsoft.com\",\"paymentinstruments-int.mp.microsoft.com\",\"edge.payments.microsoft.com\",\"uniblends.www.microsoft.com\",\"login.microsoftonline.com\",\"login.live.com\",\"fpt.microsoft.com\"];_w.APD=[\".delve.office.com\",\".uservoice.com\",\".cdn.office.net\",\"a.config.skype.com\",\"abcnews.go.com\",\"amazon.com\",\"apps.powerapps.com\",\"app.powerbi.com\",\"app.powerbi.cn\",\"app.powerbi.de\",\"app.powerbigov.us\",\"b.config.skype.com\",\"bfb\",\"bfb-int\",\"bing.com\",\"bing.net\",\"bing-int.com\",\"bingsandbox.com\",\"bingweathermap.azureedge.net\",\"bloomberg.com\",\"c.tenor.com\",\"cbsnews.com\",\"cdn.syndication.twimg.com\",\"channel9.msdn.com\",\"chinacloudapp.cn\",\"clarity.ms\",\"cnn.com\",\"covid19healthbot.cdc.gov\",\"covid19healthbot-dev.cdc.gov\",\"ctmbing.azurefd.net\",\"dailymotion.com\",\"dict.bing.com.cn\",\"downvids.com\",\"downvids.net\",\"edition.cnn.com\",\"embed.vevo.com\",\"euronews.com\",\"facebook.com\",\"fave.api.cnn.io\",\"hexun.com\",\"huffingtonpost.com\",\"idsync.rlcdn.com\",\"ign.com\",\"imdb.com\",\"latest-swx.cdn.skype.com\",\"live.com\",\"login.live-int.com\",\"mashable.com\",\"microsoft.com\",\"microsoftonline.com\",\"microsofttranslator.com\",\"mathsolver.microsoft.com\",\"msecnd.net\",\"msftoffers.com\",\"msit.powerbi.com\",\"msn.com\",\"mtv.com\",\"onenote\",\"photosynth.net\",\"platform.bing.com\",\"platform.twitter.com\",\"powerbi-df.analysis-df.windows.net\",\"r.msftstatic.com\",\"rafd.bing.com\",\"rafd.staging-bing-int.com\",\"raka.bing.com\",\"r.bing.com\",\"r.staging-bing-int.com\",\"raka.staging-bing-int.com\",\"rcf.staging-bing-int.com\",\"rcf.bing.com\",\"rottentomatoes.com\",\"s.cn.bing.net\",\"skype.com\",\"snrproxy.binginternal.com\",\"snrproxyeast.binginternal.com\",\"snrproxync.binginternal.com\",\"snrproxysc.binginternal.com\",\"snrproxywest.binginternal.com\",\"spoprod-a.akamaihd.net\",\"substrate.office.com\",\"swc.cdn.skype.com\",\"swx.cdn.skype.com\",\"variflight.com\",\"video.disney.com\",\"videoplayercdn.osi.office.net\",\"vimeo.com\",\"azureedge.net\",\"virtualearth.net\",\"web.powerapps.com\",\"widgets.icanbuy.com\",\"widgets.ign.com\",\"windows.net\",\"wsj.com\",\"xpaycdn-int.azureedge.net\",\"xpaycdn.azureedge.net\",\"ssl.kaptcha.com\",\"tst.kaptcha.com\",\"yahoo.co.jp\",\"youtube.com\",\"ytimg.com\",\"zdnet.com\",\"chrome-extension://haldlgldplgnggkjaafhelgiaglafanh\",\"player.twitch.tv\",\"mixer.com\",\"3pcookiecheck.azureedge.net\",\"cetonc.binginternal.com\",\"cetosc.binginternal.com\",\"cetoeast.binginternal.com\",\"cetowest.binginternal.com\",\"akam.bing.com\",\"akam.staging-bing-int.com\",\"ewlmaakam.staging-bing-int.com\",\"akamproxyeast.staging-bing-int.com\",\"akamproxync.staging-bing-int.com\",\"akamproxysc.staging-bing-int.com\",\"akamproxywest.staging-bing-int.com\",\"cjfdbemmaeeohgibnhdhlakiahifjjcf\",\"bngpiglbalmenaabohcooocpnljgfemj\",\"opentable.com\",\"wolframalpha.com\",\"mswolfram-staging-tm.office.net\",\"instacart.com\",\"kayak.com\",\"klarna.com\",\"redfin.com\",\"shopify.com\",\"zillow.com\",\"rwww.bing.com\",\"content.lifecycle.officeppe.net\",\"content.lifecycle.office.net\",\"pmservices.cp.microsoft.com\",\"paymentinstruments.mp.microsoft.com\",\"paymentinstruments-int.mp.microsoft.com\",\"edge.payments.microsoft.com\",\"uniblends.www.microsoft.com\",\"login.microsoftonline.com\",\"login.live.com\",\"fpt.microsoft.com\"];_w.APC=[\"bm_\",\"fb_\",\"panelWrapper\",\"df_topAlAs\",\"df_playBut\",\"df_vidTime\",\"na_cai\",\"ckt_\",\"Light\",\"Dark\",\"taskbar\",\"ssSIV\",\"square_\",\"partial-det\",\"tall_\",\"item\",\"sw_\",\"syd_\",\"sb_\",\"sml\",\"ftrd\",\"sa_\",\"id_\",\"sc_\",\"flt_\",\"fc_\",\"cca\",\"tab-\",\"emb\",\"ctx\",\"dc_\",\"cipa\",\"dict\",\"btm\",\"wtr\",\"wpc\",\"fin\",\"sp-\",\"carousel\",\"vp_\",\"vid\",\"nav_\",\"vt\",\"va_\",\"avc\",\"cic\",\"sports\",\"lc_\",\"bing\",\"dmap_\",\"pvc_\",\"ans_\",\"mcd\",\"composite\",\"mt_\",\"irp\",\"iap\",\"tv\",\"aggtv\",\"irhc\",\"vrh\",\"det\",\"tit\",\"sub\",\"col\",\"card\",\"hlsel\",\"hlblk\",\"ovl\",\"ctpt\",\"bubble\",\"memodal\",\"meoverlay\",\"c_\",\"spl-\",\"microsoft\",\"skp\",\"saa\",\"unlockButton\",\"overlay\",\"MapPushpinBase\",\"pa_\",\"aa_\",\"skype_\",\"ftrSbR\",\"quizContainer\",\"alrt_\",\"st_\",\"expan\",\"word\",\"rpt_\",\"o_\",\"e_\",\"searchbar\",\"row\",\"Traffic\",\"tl\",\"gray\",\"bep\",\"wk_\",\"crs_\",\"w10\",\"personal\",\"fs3_\",\"ezp_\",\"hp\",\"post\",\"mc_\",\"fb\",\"lgb\",\"el_\",\"perf\",\"stb\",\"PP\",\"bw\",\"infobubble\",\"l_\",\"ms-\",\"NavBar_\",\"cmt_\",\"bottom\",\"Copyright\",\"upsell\",\"ab_\",\"w_\",\"hlig\",\"eachStep\",\"close_\",\"cGifIcon\",\"cThIcon\",\"autosuggest\",\"showtimesMovie\",\"sel\",\"dish\",\"formatShowtimes\",\"wp_\",\"hasExpandText\",\"forecast\",\"as_\",\"ecmp\",\"cmp\",\"comp\",\"userChat\",\"bot\",\"bTyp\",\"team\",\"serp\",\"preG\",\"option\",\"azBxInsert\",\"ec_\",\"cs_\",\"spin\",\"skype-conversation\",\"conversation\",\"fs_\",\"grammarly\",\"filterBar\",\"withFilters\",\"textanno\",\"mv_lm\",\"usagTpVsDosage\",\"trans_button_group\",\"algo_action_template\",\"meg_item\",\"ev_\",\"ol_\",\"offer\",\"embed\",\"videoplayercdn\",\"searchNearby\",\"directionsPanel\",\"dragOverlay\",\"infobox\",\"mss\",\"noneG\",\"usage\",\"drImp\",\"sf_\",\"dfindOverModal\",\"circuit\",\"swc\",\"CodeMirror\",\"cm-s-default\",\"msg msg-warning\",\"LogoContainer\",\"quadrantOverride\",\"ac-\",\"gc-\",\"fsmd-\",\"fsg-\",\"fsmf-\",\"msto_\",\"rq\",\"geoItm\",\"bqaq_quotes\",\"bqap_padding\",\"loc\",\"ent_cnt\",\"r_mf\",\"exp_\",\"btOverlay\",\"mnot_container\",\"info_C\",\"ev_talkbox_notification\",\"ev_talkbox_wrapper_min\",\"p_tr_\",\"slide\",\"bnc-\",\"itr_poi\",\"cg-\",\"elmlr_\",\"scrl\",\"gam-\",\"htv-\",\"genel-\",\"gs_\",\"qo_\",\"jss_\",\"mapsresp\",\"geochainContainer\",\"scaleBar\",\"ae-\",\"CalendarSync\",\"spl_\",\"adbDef\",\"layerFrame\",\"esp-\",\"elis-\",\"elcan-\",\"elec-\",\"sharegeneralcard\",\"edu_\",\"br-\",\"covt_dd\",\"covt_dd_sel\",\"msac_sel\",\"msac_ddi\",\"cov_tt_tr\",\"cov_tt_tn\",\"cov_\",\"dr_\",\"bt_\",\"epv_\",\"rich_card\",\"mf-item-cntr\",\"footer_mcp\",\"ntro-\",\"ntro_\",\"th-answer-explanation-wrapper\",\"th-questions-completed\",\"th-next-question\",\"th-modal-wrapper\",\"th-show-hint-wrapper\",\"th-show-hint-description\",\"th-show-hint-example\",\"th-word-carousel\",\"th-audio-player\",\"retail_btf\",\"na_\",\"news_\",\"nws_\",\"scs_\",\"scadt\",\"jb_\",\"peregrine-\",\"opalfeedblock\",\"expnd_c\",\"wfr_grid  ldeft\",\"rwgradienttitle\",\"azuremediaplayer\",\"amp-\",\"vjs-\",\"logo-title-row\",\"rwrl\",\"wpt_hdrs\",\"actionitem\",\"sl_\",\"ml_\",\"wc_\",\"rcld_\",\"pst_expand_btn\",\"pst_collapse_btn\",\"hdr_rating\",\"disambig-outline\",\"editor-\",\"sto_\",\"tt_\",\"nc_\",\"dr_\",\"pt_\",\"qna-\",\"qna_\",\"paahybrid_content\",\"b_floatrt\",\"pec_\",\"maplibregl\",\"atlas-map\",\"marker-collection-container\",\"fui-\",\"recharts\",\"edgwklg_\",];_w.APN=[\"fb_ovrly_cnt\",\"b_bfb\",\"b_bfb_context_ans\",\"b_mapOverlay\",\"m365ChatPromptLibraryDialogSurface\"];(function(){function i(n,t,i){for(var r=0;r<t.length;r++)if(i===\"C\"&&n.toUpperCase().indexOf(t[r].toUpperCase())===0||i===\"S\"&&n.toUpperCase().indexOf(t[r].toUpperCase())>=0)return!0;return!1}function o(n,t,i){sj_log(\"CI.AdPrevention\",n,t+\":\"+i)}function s(n){while(n&&n.tagName!==\"BODY\"&&f.length>0){if(f.indexOf(n.id)>-1||n.className&&(n.className.indexOf(\"lpc_ip_root_class\")>=0||n.className.indexOf(\"ms-Layer\")>=0))return!0;n=n.parentNode}return!1}function n(n,t,i){n.parentNode&&n.parentNode.nodeType===1&&(n.tagName==\"IFRAME\"||n.nodeType===1&&n.offsetWidth&&n.offsetWidth>20)&&(t+=\"D\",n.parentNode.removeChild(n),o(t,n.tagName,i))}function h(r){r.src&&(t.href=r.src,window.location.hostname.indexOf(t.hostname)<0&&!i(t.hostname,l,\"S\")&&n(r,\"RS\",t.hostname))}function c(t){var r=t.className,u=r&&r.trim();!u||u.indexOf(\"b_\")===0||i(u,a,\"C\")||s(t)||n(t,\"RC\",r)}function r(t){var i=window.location.pathname,r;try{window.MutationObserver!=undefined&&(typeof MutationObserver!=\"function\"||MutationObserver.toString().indexOf(\"[native code]\")<0)?sj_log(\"CI.AdPrevention\",\"MutationObserver overrided\",\"true\"):(window.MutationObserver||window.WebKitMutationObserver)&&typeof MutationObserver==\"function\"?i&&(i.toUpperCase()===\"/SEARCH\"||i.toUpperCase()===\"/\"||i.toUpperCase()===\"/MAPS\")&&(r=new MutationObserver(function(t){var f,r,e,i;if(t)for(f=0;f<t.length;f++)if(r=t[f].addedNodes,r&&r.length)for(e=0;e<r.length;e++){i=r[e];switch(i.tagName){case\"IFRAME\":case\"IMG\":case\"SCRIPT\":case\"LINK\":h(i);break;case\"DIV\":case\"LI\":c(i);break;case\"OBJECT\":i.type&&i.type.indexOf(\"flash\")>=0&&n(i,\"RN\",i.outerHTML.substr(0,u));break;case\"CENTER\":n(i,\"RN\",i.outerHTML.substr(0,u));break;default:return}}}),r.observe(t,{childList:!0,subtree:!0})):sj_log(\"CI.AdPrevention\",\"MutationObserver not available\",\"true\")}catch(f){sj_log(\"CI.AdPrevention\",\"error_creating_dom_observer\",f.name)}}var t=sj_ce(\"a\"),u=100,l=_w.APD?_w.APD.slice():[],a=_w.APC?_w.APC.slice():[],f=_w.APN?_w.APN.slice():[],e;r(document.getElementsByTagName(\"head\")[0]);e=function(){r(document.getElementsByTagName(\"body\")[0])};window.addEventListener(\"load\",e)})();(function(){function t(t,i){var u=t.tagName;return(u===\"SCRIPT\"&&(n.href=t.src)||u===\"OBJECT\"&&t.type&&t.type.indexOf(\"flash\")>0&&(n.href=t.data))&&n.href.length>0&&n.hostname.length>0&&n.hostname!==location.hostname&&!e(n.hostname)?(sj_log(\"CI.AntiMalware\",i,u.substr(0,1)+\":\"+n.href.substr(0,r)),!1):(t.getAttribute&&(t.getAttribute(\"data-rms\")||t.getAttribute(\"data-bing-script\"))&&t.setAttribute(\"nonce\",o),!0)}function e(n){for(var t=0;t<i.length;t++)if(n.indexOf(i[t])>=0)return!0;return!1}var i=_w.AM,r=100,n=document.createElement(\"A\"),o=_G.IG.substr(0,6),u,f;document.write=function(n){n.length>0&&sj_log(\"CI.AntiMalware\",\"DW\",n.substr(0,r))};typeof Element!=\"undefined\"&&Element.prototype&&(u=Element.prototype.appendChild,Element.prototype.appendChild=function(n){return t(n,\"AC\")?u.apply(this,arguments):null},f=Element.prototype.insertBefore,Element.prototype.insertBefore=function(n){return t(n,\"IB\")?f.apply(this,arguments):null})})();_G!==undefined&&_G.EF!==undefined&&_G.EF.bmasynctrigger===1&&window.requestAnimationFrame!==undefined&&document.visibilityState!==undefined&&document.visibilityState===\"visible\"?requestAnimationFrame(function(){_G.EF.bmasynctrigger2===1?requestAnimationFrame(function(){BM.trigger()}):_G.EF.bmasynctrigger3===1?requestAnimationFrame(function(){setTimeout(function(){BM.trigger()},0)}):setTimeout(function(){BM.trigger()},0)}):BM.trigger();var NetworkPerformance;(function(){function n(){var r=window.navigator,n,t=0,i=0;typeof r!=\"undefined\"&&(n=r.connection);typeof n!=\"undefined\"&&(t=n.rtt||t,i=n.downlink||i,typeof Log!=\"undefined\"&&typeof Log.Log==typeof Function&&Log.Log(\"NetworkPerformance\",\"NetworkPerformanceDetails\",\"timinginfo\",!1,\"Rtt\",t.toString(),\"Downlink\",i.toString()))}sj_evt.bind(\"onPP\",n,!0)})(NetworkPerformance||(NetworkPerformance={}));var AwayTimeThreshold = 15; var AwayTimeThresholdCustomControl = false; var AwayTimeScrollTopPoleRS = false;;var Mtl_Config ={\"isTablet\":false,\"showCharCountAfter\":50,\"hideToolbar\":true,\"resizeWithGhosting\":true,\"suggestionText\":\"Suggestion,\",\"tabText\":\", Press Tab to Accept\"};;(function(){function t(){var n=_ge(\"b_header\");n&&(n.classList.add(\"b_focus\"),sj_evt.fire(\"sb_focus\"))}function i(n){var r=_qs(\"#b_header .b_searchboxForm\"),t=sb_ie?n?n.srcElement:null:n.target,i;t&&t instanceof HTMLElement&&t.id!=\"sb_form_q\"&&!(r&&r.contains(t))&&(i=_ge(\"b_header\"),i&&(i.classList.remove(\"b_focus\"),sj_evt.fire(\"sb_blur\")))}var n=_ge(\"sb_form_q\");sj_be(n,\"focus\",t);sj_be(_d.body,\"click\",i)})();var MicLoad;(function(n){function r(n){function i(){sj_evt.unbind(\"micLoaded\",i);var t=n.querySelector(\".b_icon\");t&&t.click()}t||(n.clicked||(sj_evt.bind(\"micLoaded\",i,!0),n.clicked=!0),sj_log(\"CI.VoiceSearch\",\"MicPreClick\",\"Beforeload\"))}function i(){t=!0;sj_evt.unbind(\"micLoaded\",i)}var t=!1;n.handleMicClick=r;sj_evt.bind(\"micLoaded\",i,!0)})(MicLoad||(MicLoad={}));var SBI;(function(n){var t;(function(n){function u(n){function r(){sj_evt.unbind(t,r);sj_evt.fire(\"sbidlg.show\",n.parentElement)}i||(n.clicked||(sj_evt.bind(t,r,!0),n.clicked=!0),sj_log(\"CI.VisualSearch\",\"SbiPreClick\",\"BeforeLoad\"))}function r(){i=!0;sj_evt.unbind(t,r)}var t=\"sbiLoaded\",i=!1;n.handleIconClick=u;sj_evt.bind(t,r,!0)})(t=n.IconLoader||(n.IconLoader={}))})(SBI||(SBI={}));var Identity; (function(Identity) { Identity.sglid =false; Identity.orgIdPhotoUrl =\"https://business.bing.com/api/v3/search/person/photo?caller=IP\\u0026id={0}\"; Identity.setLoginPreference =false; Identity.isExplicitMsaSignIn =false; })(Identity || (Identity = {}));;var wlc_d =10, wlc_t =63846123522, wlc_wfa =false;;window.data_iid = \"SERP.5066\";;var DynScopesDropdownRE;(function(n){function v(n,t,r,e,s,h,c){var a,l,v;u||(i=n,f=e,o=c,sj_evt.fire(\"dynamicscopesrearranging\",t),o||(w(t,n,s,h),nt(r)),sj_evt.bind(\"onP1\",p),((a=_G===null||_G===void 0?void 0:_G.EF)===null||a===void 0?void 0:a.logforctl)===1&&(l=_ge(\"b_header\"),v=l===null||l===void 0?void 0:l.querySelector(\".b_logoArea\"),sj_be(v,\"click\",y)),u=!0)}function y(){var n=\"WebLogoClick\";document.querySelector(\"cib-serp[mode='conversation']\")&&(n=\"ConversationLogoClick\");_w.sj_log&&sj_log(\"CI.HeaderMSLogo\",n,(_G===null||_G===void 0?void 0:_G.V)||\"other\")}function p(){if(sj_cook&&sj_cook.set&&sj_cook.clear){var n=\"dsc\";sj_cook.clear(n,\"/\");i&&sj_cook.set(n,\"order\",i,!1,\"/\")}}function w(n,t,i,r){var c=tt(),e,o,s,h,u;if(c){if(e=rt(c),b(e,i,r),n){var a=n.split(\",\"),v=e.length,l=[],y=[];for(u=0;u<a.length;u++)o=a[u].split(\":\"),o&&o.length==2&&(s=parseInt(o[0]),h=parseInt(o[1]),s<v&&h<v&&(l[h]=e[s].innerHTML,y[h]=e[s].id));for(u=0;u<l.length;u++)e[u].innerHTML=l[u],e[u].id=y[u]}f&&k(e);c.className=\"\"}}function b(n,t,i){var r,u;if(i)t?sessionStorage.setItem(\"RealEstateQuery\",t):sessionStorage.removeItem(\"RealEstateQuery\");else if(t)for(r=0;r<n.length;r++)n[r].id===a&&(u=n[r].innerHTML,n[r].innerHTML=u.replace(/href=\"[^\"]*\"/,'href=\"https://www.bing.com/homes/map?q='+t+'&FORM=000060\"'))}function k(n){for(var i,u,f,t=0;t<n.length;t++)if(n[t].id===c||n[t].id===l){i=n.length-1;e&&r>0&&(i=r-1);t!=i&&(u=n[t].innerHTML,f=n[t].id,t<i?d(n,t,i):g(n,i,t),n[i].innerHTML=u,n[i].id=f,sj_evt.fire(\"dynamicchatscoperelocate\"));break}}function d(n,t,i){for(var r=t;r<i;r++)n[r].innerHTML=n[r+1].innerHTML,n[r].id=n[r+1].id}function g(n,t,i){for(var r=i;r>t;r--)n[r].innerHTML=n[r-1].innerHTML,n[r].id=n[r-1].id}function nt(n){var e,o,h,u,c,l,f,a,r,i;if(n&&(h=n.split(\":\"),u=it(),(e=u===null||u===void 0?void 0:u.children)===null||e===void 0?void 0:e.length))for(c=u.children,l=s(),f=0;f<h.length;f++){for(a=t+h[f],r=0;r<c.length;r++)if(i=c[r],i.id===a){u.removeChild(i);break}for(r=0;r<l.length;r++)if(i=l[r],i.id===a){(o=i===null||i===void 0?void 0:i.parentElement)===null||o===void 0?void 0:o.removeChild(i);break}}}function tt(){var n=_d.querySelectorAll(\".b_scopebar > .b_scopehide\");return n&&n.length>0?n[0]:null}function it(){var n=_d.querySelectorAll(\".b_scopebar\");return(n===null||n===void 0?void 0:n.length)?n[0].firstChild:null}function rt(n){for(var f,i=[],u=n.children,t=0;t<u.length;t++)u[t].id===h?(r=t,f=s(),i.push.apply(i,f),e=!0):i.push(u[t]);return i}function s(){var n=_d.querySelectorAll(\".b_scopebar #b-scopeListItem-menu .b_sp_over_menu .b_scopebar_item\");return Array.prototype.slice.call(n)}var u=!1,i,f=!1,e=!1,r=-1,o=!1,t=\"b-scopeListItem-\",h=t+\"menu\",c=t+\"conv\",l=t+\"convups\",a=t+\"realestate\";n.init=v})(DynScopesDropdownRE||(DynScopesDropdownRE={}));_G.AppVer=\"44432986\";\n//]]></script><a id=\"id_mobile\" class=\"id_button \" role=\"button\" data-priority=\"2\" href=\"javascript:void(0);\" h=\"ID=SERP,5072.1\"><span class=\"mobicontxt\">Mobile</span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"33\" height=\"36\" viewBox=\"0 0 33 36\" fill=\"none\"><path d=\"M11.9219 5C10.3082 5 9 6.30817 9 7.92187V29.5781C9 31.1918 10.3082 32.5 11.9219 32.5H22.5781C24.1918 32.5 25.5 31.1918 25.5 29.5781V7.92187C25.5 6.30817 24.1918 5 22.5781 5H11.9219ZM10.7187 7.92187C10.7187 7.25741 11.2574 6.71875 11.9219 6.71875H22.5781C23.2426 6.71875 23.7812 7.25741 23.7812 7.92187V29.5781C23.7812 30.2426 23.2426 30.7812 22.5781 30.7812H11.9219C11.2574 30.7812 10.7187 30.2426 10.7187 29.5781V7.92187ZM15.3594 26.6562C14.8848 26.6562 14.5 27.041 14.5 27.5156C14.5 27.9902 14.8848 28.375 15.3594 28.375H19.1406C19.6152 28.375 20 27.9902 20 27.5156C20 27.041 19.6152 26.6562 19.1406 26.6562H15.3594Z\" /><circle class=\"b_hide\" cx=\"29.5\" cy=\"3.5\" r=\"3.5\" fill=\"#C80000\" /></svg></a><a id=\"id_sc\" class=\"idp_ham nohphbtop\" aria-label=\"Settings and quick links\" aria-expanded=\"false\" aria-controls=\"id_hbfo\" aria-haspopup=\"true\" role=\"button\" tabindex=\"0\" href=\"javascript:void(0);\" h=\"ID=SERP,5068.1\"></a><span id=\"id_hbfo\" _iid=\"SERP.5069\" class=\"slide_up nohpfo\" tabindex='-1' aria-hidden=\"true\" aria-labelledby=\"id_sc\" aria-modal=\"true\" role=\"menu\"></span></div><nav class=\"b_scopebar\" role=\"navigation\" aria-label=\"Search Filter\"><ul class=\" b_scopehide\"><li class=\" b_active\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-web\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"page\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=800deebc60d3525aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1Lz9zY29wZT13ZWImRk9STT1IRFJTQzE&amp;ntb=1\" h=\"ID=SERP,5031.1\"><span class=\"scp_conv_mode\"></span>Search</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-conv\" data-query=\"\"><a class=\"\" aria-current=\"false\" href=\"javascript:void(0)\" h=\"ID=SERP,5032.1\"><span class=\"scp_conv_mode\"></span>Copilot</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-images\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f86c8e6261ba719cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L2ltYWdlcy9zZWFyY2g_cT1NaWNyb3NvZnQrd2lraXBlZGlhJkZPUk09SERSU0Mz&amp;ntb=1\" h=\"ID=SERP,5033.1\">Images</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-video\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=00ceb85153193903JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3ZpZGVvcy9zZWFyY2g_cT1NaWNyb3NvZnQrd2lraXBlZGlhJkZPUk09SERSU0M0&amp;ntb=1\" h=\"ID=SERP,5034.1\">Videos</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-local\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ba04d027117fd65eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L21hcHM_cT1NaWNyb3NvZnQrd2lraXBlZGlhJkZPUk09SERSU0M2&amp;ntb=1\" h=\"ID=SERP,5035.1\">Maps</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-news\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ede45af532d595baJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L25ld3Mvc2VhcmNoP3E9TWljcm9zb2Z0K3dpa2lwZWRpYSZGT1JNPUhEUlNDNw&amp;ntb=1\" h=\"ID=SERP,5036.1\">News</a></li><li class=\"\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-shop\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=dd6b59ad4c4a2a86JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3Nob3A_cT1NaWNyb3NvZnQrd2lraXBlZGlhJkZPUk09U0hPUFRC&amp;ntb=1\" h=\"ID=SERP,5037.1\">Shopping</a></li><li id=\"b-scopeListItem-menu\"><a target=\"_self\" aria-current=\"false\" href=\"javascript:void(0);\" tabindex=\"0\" aria-haspopup=\"true\" role=\"button\" aria-label=\"Dropdown Menu\"><span class=\"b_sp_menu_separ\" id=\"b_sp_menu_separ\"><svg focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"></path></svg></span>More</a><div class=\"b_sp_over_cont\"><ul class=\"b_sp_over_menu\"><li class=\" b_sp_over_item b_scopebar_item\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-flights\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b2ea66b68609b879JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3RyYXZlbC9zZWFyY2g_cT1NaWNyb3NvZnQrd2lraXBlZGlhJm09ZmxpZ2h0cyZGT1JNPUZCU0NPUA&amp;ntb=1\" h=\"ID=SERP,5038.1\">Flights</a></li><li class=\" b_sp_over_item b_scopebar_item\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-travelhub\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e0058f37de8ac10bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTAzOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3RyYXZlbC9zZWFyY2g_cT1NaWNyb3NvZnQrd2lraXBlZGlhJm09dHJhdmVsJkZPUk09VEhTQ09Q&amp;ntb=1\" h=\"ID=SERP,5039.1\">Travel</a></li><li class=\" b_sp_over_item b_scopebar_item\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-hotels\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=fd75c10990b11401JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA0MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3RyYXZlbC9zZWFyY2g_cT1NaWNyb3NvZnQrd2lraXBlZGlhJm09aG90ZWxzJkZPUk09SFRTQ09Q&amp;ntb=1\" h=\"ID=SERP,5040.1\">Hotels</a></li><li class=\" b_sp_over_item b_scopebar_item\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-realestate\" data-query=\"\"><a class=\"\" target=\"_blank\" aria-current=\"false\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=29776d032124c57cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA0MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L2hvbWVzP0ZPUk09MDAwMDYw&amp;ntb=1\" h=\"ID=SERP,5041.1\">Real Estate</a></li><li class=\" b_sp_over_item b_scopebar_item\" data-menuUrl=\"\"\n    id=\"b-scopeListItem-bingpages\" data-query=\"\"><a class=\"\" aria-current=\"false\" href=\"/bp/verify?FORM=000061\" h=\"ID=SERP,5042.1\">My Bing</a></li></ul></div></li><li id=\"b-scopeListItem-notebook\" class=\"\"><a href=\"javascript:void(0);\" h=\"ID=SERP,5050.1\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"16\" fill=\"none\"><path d=\"M3 .5a.5.5 0 0 0-1 0V1h-.5A1.5 1.5 0 0 0 0 2.5v12A1.5 1.5 0 0 0 1.5 16H7v-3.5A1.5 1.5 0 0 1 8.5 11H12V2.5A1.5 1.5 0 0 0 10.5 1H10V.5a.5.5 0 0 0-1 0V1H6.5V.5a.5.5 0 0 0-1 0V1H3zm0 5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5M3.5 8h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1M3 11.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m8.69.5H8.5a.5.5 0 0 0-.5.5v3.19q.077-.06.146-.13l3.415-3.414q.07-.07.128-.146\"/></svg>Notebook</a></li><li id=\"scope_tools_wrapper\" class=\"tools_scope b_hide\"><a href=\"javascript:void(0);\" h=\"ID=SERP,5049.1\">Tools</a></li></ul></nav></header><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\" >//<![CDATA[\n_G.FCT=new Date;\n//]]></script><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\" >//<![CDATA[\n_G.BCT=new Date;\n//]]></script><style type=\"text/css\">#b_header #id_h{content-visibility:visible}#b_content a.b_LinksColorMD,#b_content a:visited.b_LinksColorMD{color:#1a73e8}.b_CursorProgress{cursor:progress}#b_results .b_expando .b_icbtns .ibs_btn,#b_context .b_icbtns .ibs_btn,#b_pole .b_icbtns .ibs_btn{border-color:#106ebe;color:#106ebe}#b_content #b_context .b_sgmbtns a.cbtn,#b_content #b_context .b_sgmbtns a.cbtn:visited,#b_content #b_results .b_sgmbtns a.cbtn,#b_content #b_results .b_sgmbtns a.cbtn:visited,#b_content #b_context .b_sgmbtns .b_tpoptbtn,#b_content #b_context .b_sgmbtns .b_tpoptbtn:visited,#b_content #b_results .b_sgmbtns .b_tpoptbtn,#b_content #b_results .b_sgmbtns .b_tpoptbtn:visited{border-color:#106ebe;background-color:#106ebe}.listCard.vertcard a.ibs_1btns .ibs_btn .b_primtxt,.listCard.vertcard a.ibs_2btns .ibs_btn .b_primtxt{color:#106ebe}.wk_buttons .wk_button .cbtn input,.wq_tq_sbutton2 .cbtn input[type=\"submit\"],#ifeu a#GoToButton,#b_results li .coupon>button,#b_context li .coupon>button,#b_content .gtOfferBtn,#b_content .b_ans .rebatesBanner a.cbtn,#b_content .wpc_module .rebatesBanner a.cbtn,.wpc_module .rebatesBanner a.cbtn,#b_content .b_sgmbtns a.cbtn,#b_content .b_sgmbtns a.cbtn:visited{background-color:#106ebe !important;color:#fff !important;border-color:#106ebe !important}#b_results .br-seemrbtnCntnt,#b_context .br-seemrbtnCntnt,#b_results .jb_see_all_btn,#b_results .wiki_seemore,.b_rich .iaplanner .iasabt,.salink .vasabt,.fb_seemorebutton,.sa_main .sa_sabt,.b_saContainer .sa_sabt,#b_results .ans_nws .new_see_more_container .new_see_more,.wfr_smlk,#b_content #b_pole #ans_nws .new_see_more{background-color:#106ebe !important}#financeAnswer .b_sideBleed .HeroTab .tab-active{box-shadow:inset 0 -3px 0 0 #106ebe !important;color:#106ebe !important}.toggle_img.overlay.toggle_on .indicator{fill:#106ebe !important}.b_filterButton.b_selected:not(.b_neutral),.tfil-sc-g .tfil-active{border-color:#106ebe !important;background-color:#106ebe !important}#ans_nws .tfil-sc-g .tfil-active{background-color:#767676 !important;border-color:#767676 !important}#lmfilters .lm_gfs .ftrH.b_selected,#lmfilters .lm_gfs .ftrH.b_selected:hover{border-color:#106ebe !important}#b_content #lMapContainer .advanceFilters .filterBar.lmFilters .ftrH.b_selected,#b_content #lMapContainer .advanceFilters .lm_filters .ftrH.b_selected,#b_content #lMapContainer .advanceFilters .b_filterButton.b_selected,#b_content #lMapContainer .advanceFilters .filterBar.lmFilters .ftrH.adv_clicked,#b_content #lMapContainer .advanceFilters .lm_filters .ftrH.adv_clicked{border-color:#106ebe !important;background-color:#106ebe !important}.tfil-sc-p .tfil-active,#b_filterBar .filtBarItem.selectedFilter,#b_filterBar #b_searchThisArea>span{border-color:#106ebe !important;background-color:#106ebe !important}#b_content .aqptmt .slide a.rel_ent{border-color:#106ebe}#b_content .b_imgans .aqptmt .slide a.rel_ent{border-color:#ddd}#lgb_info .lgb_facts svg path.gray50_fill,.b_entityTP .infoModule svg:not(#sacamerasvg) path.gray50_fill,.b_wftp_tms .infoModule svg path.gray50_fill,.b_lstp_tms .infoModule svg path.gray50_fill{fill:#106ebe}#b_content .b_rbubble.b_rselected{background-color:#106ebe;border-color:#106ebe}#b_content .b_cvnMtLink>a{border-color:#106ebe}#b_results #df_listaa .b_vPanel .df_hd .b_primtxt{color:#106ebe}#b_content .radio-container .checkmarked:after{background:#106ebe;border-color:#106ebe}#b_content .radio-container input:checked~.checkmarked{border-color:#106ebe}#warningsvg path.gray70_fill{fill:#106ebe}#b_sydConvCont{display:block;transform:translateY(0);position:fixed;height:100%;width:100%;opacity:0;transition-property:opacity,visibility,z-index;transition-delay:1s,1187ms,1187ms;transition-duration:187ms,0s,0s;visibility:hidden;z-index:-1}#b_sydBgCover{background-color:#fff;z-index:2;position:fixed;height:100vh;width:100vw;z-index:1;transition-property:transform,visibility;transition-duration:1000ms,0s;transition-timing-function:cubic-bezier(.75,0,.25,1);transition-delay:0s;transform:translateY(calc(var(--cib-header,94px) + 18px));visibility:visible}.b_sydConvAnsTest{z-index:1;position:absolute;top:120px}#b_sydHeadBg{opacity:0;height:112px;width:100%;display:block;position:absolute;transform:translateY(0);transition:transform 1000ms cubic-bezier(.75,0,.25,1),opacity 187ms cubic-bezier(0,0,0,1);z-index:-1;display:none}#b_header{transition-property:background;transition-duration:0s;transition-delay:1.5s}#b_header .bfbTenantLogoCls{display:none}.b_searchboxForm{transition-property:opacity,visibility;transition-delay:1000ms,1000ms;transition-duration:0s;transition-timing-function:cubic-bezier(.75,0,.25,1);opacity:1;visibility:visible;z-index:7}#b_content{transition-property:transform,visibility;transition-duration:1000ms,0s;transition-timing-function:cubic-bezier(.75,0,.25,1);transition-delay:0s;visibility:visible;position:relative;background-color:#fff;z-index:0}.b_widgetContainer{transition-property:visibility;transition-delay:0s;transition-duration:0s}#b_sydHeadBg{background:url(/rp/1AKRcEqxcHA1tXDCCycPO6nXsgk.jpg)}div#b_metaCont,div#b_metaChat{display:inline-flex}#b_metaCont.b_metaPadding{margin:16px 0 16px var(--polepadl)}div#b_metaCont_PillCont{max-width:750px;gap:8px 6px;display:flex;flex-wrap:wrap}div#b_metaCont_PillCont.b_metaExpanded{max-width:690px}#b_metaCont{flex-direction:column}#b_meta_bot{flex-direction:row;display:flex}#b_metaCont_Title{margin-bottom:10px;color:#767676;font-size:14px;line-height:18px}.b_metaCont_Pill{font-weight:700;font-size:14px;line-height:16px;color:#444 !important;background:#fff;border:1px solid #174ae4;padding:8px 16px 8px 16px;border-radius:16px;height:32px;box-sizing:border-box;justify-content:center;align-items:center;white-space:nowrap;display:flex}.b_metaCont_Pill:hover{background:#eff3ff;text-decoration:none}.b_metaCont_Pill.b_hide{display:none}a.b_metaCont_Pill:visited{color:#444}.b_metaExpanded #b_meta_exp{display:none}.b_metaExpanded .b_metaCont_Pill.b_hide{display:flex}#b_meta_exp{cursor:pointer}#b_meta_col{cursor:pointer;color:#174ae4 !important;background:#e2e9ff;border:none;padding-left:38px;background-repeat:no-repeat;background-size:10px 5.5px;background-position:19px 13px}#b_meta_col:hover{background-color:#d1dbfa}#b_metaChat{width:32px;height:32px;margin-right:10px;background-repeat:no-repeat;background-size:32px;background-position:center}#b_meta_col{background-image:url(/rp/OuJfi801QISuInMovU7PaSrDbMI.png)}#b_metaChat{background-image:url(/rp/em88jYr3ZOv7yX3AqoOU5z8EEnA.png)}#b_sydWelcomeTemplate_ .b_wlcmTileCont .b_wlcmTile{box-shadow:none;border:1px solid var(--cib-color-stroke-neutral-primary)}#b_sydWelcomeTemplate{display:none}.b_wlcmCont{justify-content:center;align-items:center;display:flex;flex-direction:column}.b_wlcmHdr{align-items:center;justify-content:center;display:flex;flex-direction:column;margin-bottom:36px}.b_wlcmPersLogoCont{display:flex;gap:10px;flex-direction:row;text-align:center;align-items:center;margin-inline:0 6px}.b_wlcmPersLogo{height:48px;width:auto}.b_wlcmPersName{font-style:normal;font-weight:600;font-size:40px;line-height:52px;text-align:center}.b_wlcmPersDesc{font-style:normal;font-weight:400;font-size:20px;line-height:26px;margin-top:1vh;text-align:center}.b_wlcmPersAuthorText{font-style:normal;font-weight:400;font-size:14px;line-height:18px;color:#666;margin-top:1vh;margin-bottom:2vh;text-align:center}.b_wlcmSubDesc{font-size:16px}.b_wlcmTileCont{display:flex;flex-wrap:wrap;align-content:stretch;justify-content:center;max-width:940px}.b_wlcmTileWrap{padding:10px;flex-grow:1;display:flex;box-sizing:border-box}.b_wlcmTileWrap[size=\"small\"]{width:16.67%}.b_wlcmTileWrap[size=\"medium\"]{width:25%}.b_wlcmTileWrap[size=\"large\"]{width:33.33%}.b_wlcmTile{box-shadow:0 6.67587px 25.869px -1.66897px rgba(73,141,255,.3);border:2px solid transparent;width:100%;background:#fff;border-radius:12px;padding:14px;cursor:pointer;display:flex;flex-direction:column;background:var(--cib-color-background-surface-card-primary);font-family:inherit;font-style:normal;text-align:left;position:relative}.b_wlcmTile:hover{border:2px solid var(--cib-color-stroke-accent-primary)}.b_wlcmTile p{font-size:16px;margin-top:8px;line-height:22px;color:var(--cib-color-foreground-neutral-primary);overflow-wrap:anywhere}.b_wlcmTile h1{font-size:14px;line-height:24px;display:flex}.b_wlcmTile h1::before{height:24px;width:24px;margin-right:8px;content:\"\";background-size:24px}.b_wlcmTile img{height:100%;width:100%;object-fit:cover}.b_wlcmTile .b_wlcmTileOverlay{opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;padding:14px;box-sizing:border-box;border-radius:inherit;background-color:rgba(0,0,0,.6);transition:all .2s ease-in-out}.b_wlcmTile .b_wlcmTileOverlay h4{font-weight:400;font-size:10px;color:#fff}.b_wlcmTile .b_wlcmTileOverlay p{font-weight:600;font-size:14px;color:#fff;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b_wlcmTile:hover .b_wlcmTileOverlay,.b_wlcmTile:focus-visible .b_wlcmTileOverlay{opacity:1}.b_wlcmTile:active .b_wlcmTileOverlay{background-color:rgba(0,0,0,.65)}.b_wlcmTile.code h1{color:#09743d}.b_wlcmTile.design h1{color:#7111b0}.b_wlcmTile.write h1{color:#0e56bb}.b_wlcmTile.laugh h1{color:#94302d}.b_wlcmTile.chat h1{color:#174ae4}.b_wlcmTile.organize h1{color:#08684a}.b_wlcmTile.compare h1{color:#b0570c}.b_wlcmTile.shop h1{color:#436dcd}.b_wlcmTile.travel h1{color:#444}.b_wlcmTile.create h1{color:#066da7}.b_wlcmTile.shopwithbing{box-shadow:0 4px 15px 1px var(--cib-color-fill-accent-strong-primary)}.b_wlcmTile.shopwithbing h1{color:#436dcd;font-size:20px;font-weight:600}.b_wlcmTile.freesydney{box-shadow:0 4px 15px 1px var(--cib-color-fill-accent-strong-primary)}.b_wlcmTile.freesydney h1{color:#436dcd;font-size:20px;font-weight:600}.b_wlcmTile.createwithsuno h1{color:#5e438f;font-size:14px}.b_wlcmTile.onthisday h1{color:#066da7;font-size:14px;font-weight:600}.b_wlcmTile.onthisday h1::before{background-repeat:no-repeat}.b_wlcmTile.hasImage{padding:0;border:none}.b_wlcmTile.hasImage img{border-radius:inherit}.b_wlcmTile.hasImage.neurips{box-shadow:0 4px 15px 1px var(--cib-color-fill-accent-strong-primary)}.b_wlcmTile.hasImage.neurips h1{color:#436dcd;font-size:20px;font-weight:600}.b_wlcmTilePrivacy{padding-top:10px;color:var(--cib-color-fill-accent-strong-primary)}body.b_dark #b_sydWelcomeTemplate_ .b_wlcmTileCont .b_wlcmTile{box-shadow:unset}.b_wlcmPersLogo.copilot,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.copilot{content:url(/rp/_WT61VllAyx4fyquJgufM7hwmeg.png)}.b_wlcmPersLogo.sydney,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.sydney{content:url(/rp/ZIFQVh6WX4QKgPWuBMBKNrERh3A.png)}.b_wlcmPersLogo.designer,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.designer{content:url(/rp/3dpNBmIryMo5aT8OzddVNQ4C7RM.png)}.b_wlcmPersLogo.travel,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.travel{content:url(/rp/dPdzk-H3irE62Z-qEGnKQBnmoqg.png)}.b_wlcmPersLogo.cooking,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.cooking{content:url(/rp/LpcE_txTpGyXOwS1tgfqoqDmQIs.png)}.b_wlcmPersLogo.fitness,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.fitness{content:url(/rp/AQRY0eWo68Cc4cx_zFUEWFz1ufQ.png)}.b_wlcmPersLogo.shopping,body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.shopping{content:url(/rp/k_s3zfEmrUri89BYcZH2O4eCqlU.png)}.b_wlcmPersLogo.custom{content:url(/rp/burpYy-CRO1vgH1vjAqyS6-OGgA.png)}body.b_dark #b_sydWelcomeTemplate_ .b_wlcmPersLogo.custom{content:url(/rp/QrTZOk5rYcdxoIXxpBmn5g5csJc.png)}.b_wlcmTile h1::before,.b_wlcmTile.chat h1::before{background-image:url(/rp/kEvTUFzKj2D-xte4DoUlrzmPyEc.png)}.b_wlcmTile.code h1::before{background-image:url(/rp/tucoHZVv4ubzFjfXhxKqf3gaIVA.png)}.b_wlcmTile.design h1::before{background-image:url(/rp/hXyyS-qUAYcgnA86cK6MeAQqLLY.png)}.b_wlcmTile.write h1::before,.b_wlcmTile.hasImage.neurips h1::before{background-image:url(/rp/IOALgZVf8sFUYZ411VgUf34Jeuo.png)}.b_wlcmTile.laugh h1::before{background-image:url(/rp/a-G2ZteqzuB0ZXKzAc0B_fAinFc.png)}.b_wlcmTile.organize h1::before{background-image:url(/rp/D0TjmITlkNYeShKg4VZq6uwFVPU.png)}.b_wlcmTile.compare h1::before{background-image:url(/rp/-KutFzCK2PE8OulbflI9msUMhHQ.png)}.b_wlcmTile.shop h1::before,.b_wlcmTile.shopwithbing h1::before{background-image:url(/rp/QnAXqFPafDMdyUoS-wnr6nQHB7M.png)}.b_wlcmTile.travel h1::before{background-image:url(/rp/A61yW6snD6XU1-8bpFoh_CQoaRo.png)}.b_wlcmTile.create h1::before{background-image:url(/rp/jxWPRKr_ayAp7F6IpAjhwabKW3I.png)}.b_wlcmTile.freesydney h1::before{background-image:url(/rp/Z4vyvteU-KT7dvKWOhpvT2qjgFs.png)}.b_wlcmTile.createwithsuno h1::before{background-image:url(/rp/GViBJydZ8nSlFjhmXPiqDLAynQ0.png)}.b_wlcmTile.onthisday h1::before{background-image:url(/rp/MNhmfKaCGPLMqVRVashuCg7ESKM.png)}#b_sydWelcomeTemplate{display:none}#b_tween{position:relative}#b_tween>div,#b_tween>span:not(.b_hide),#b_tween_searchTools>div,#b_tween_searchTools>span{display:inline-block}#b_content:not(.mapOverlayOnSerp) .b_hidetoggletween{display:none}#b_content:not(.mapOverlayOnSerp) #b_tween.b_hidetoggletween,#b_tween>div.b_hide{display:none}#b_tween_searchResults{line-height:30px}#b_tween_searchTools{height:30px}#b_tween>div>span{padding-right:25px}#b_tween #b_tween_searchTools .ftrH{padding-left:0}#b_tween .ftrB .b_dropdown{z-index:9}.ftrH,.ftrHd,.ftrD>a,.ftrD>div{white-space:nowrap;height:36px;line-height:36px;padding:0 16px}.ftrD{max-height:216px;overflow:hidden;min-width:125px}.amazonBackground{background:#f2f2f2 !important}.ftrD>a,.ftrD>div{display:block}.ftrS .ftrD{margin-right:10px}.ftrSbR{position:absolute;top:0;right:0;height:100%;margin:5px 0;padding-right:3px}.ftrB .sw_ddbk{margin:2px 0 2px 7px}.ftrB .sw_tpcg,.ftrB .sw_tpcbl{margin:0 0 0 14px}.ftrH,.ftrHd,.ftrB .sw_ddbk,.ftrB .sw_tpcg,.ftrB .sw_tpcbl{display:inline-block;zoom:1}#b_tween a.ftrH{height:30px;line-height:30px;background-color:transparent;border:none;border-radius:16px;max-width:220px;padding:0 15px}#b_tween .ftrB a.ftrH.b_selected,#b_tween .ftrB a.ftrH:hover,#b_tween .ftrB a.ftrH:focus{color:#111;cursor:pointer;background-color:#fff}@media screen and (-ms-high-contrast:active){#b_tween a.ftrH,div.b_dropdown .ftrD a{color:WindowText}}#b_tween .ftrB .b_dropdown{position:absolute;background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 3px 0 rgba(0,0,0,.1);margin-top:6px;min-width:160px;overflow:hidden;animation:.25s ease 0s 1 normal forwards tweenDropDown}#b_tween .ftrB .b_dropdown.hasError{max-height:350px !important}#b_tween .ftrB .b_dropdown.hasError .ftrD{max-height:350px}@keyframes tweenDropDown{from{max-height:0}to{max-height:312px}}#b_tween .b_dropdown .b_toggle{font-size:13px;color:#666}#b_tween .b_dropdown .b_selected{color:#111;background:#f5f5f5 !important}#b_tween .b_dropdown .b_highlighted{color:#111;font-weight:bold}.filDrop{display:inline-block;padding-left:8px;font-size:9px;vertical-align:bottom}#ntf_newtabfil{display:inline-block;padding-right:40px;font-size:14px}#ntf_newtabfil:hover{color:#111}#ntf_newtabfil .nt_tit{width:auto;margin-right:8px}#ntf_newtabfil .nt_val{margin-bottom:1px}.toggle_hidden{display:none}.toggle_ctrl{display:inline-block;vertical-align:middle;margin-left:5px;width:38px;height:16px;overflow:hidden}.toggle_img{position:relative;top:0;left:0}.toggle_label{display:inline-block;width:173px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.no_outline .toggle_item{outline:none}.toggle_item{cursor:pointer}.toggle_img svg{width:36px;height:16px}.toggle_img .bg{fill:#919191;display:block}.toggle_img .bgOverlay{fill:#fff;stroke:#919191;display:none}.toggle_img.overlay .bg{display:none}.toggle_img.overlay .bgOverlay{display:block}.toggle_img .indicator{-webkit-transform:translateX(-20px);transform:translateX(-20px);transition:cubic-bezier(.3,.5,.1,1) .15s}.toggle_img.toggle_on .indicator{-webkit-transform:translateX(0);transform:translateX(0)}.toggle_img.overlay .indicator{fill:#919191}.toggle_img.overlay.toggle_on .indicator{fill:#00809d}.toggle_img.toggle_on .bg{fill:#106ebe}.toggle_img.disabled .bg,.toggle_img.toggle_on.disabled .bg{fill:#ddd}.toggle_img.overlay.disabled .indicator,.toggle_img.overlay.toggle_on.disabled .indicator{fill:#ddd}.toggle_img.disabled .bgOverlay{stroke:#ddd}@media(prefers-color-scheme:dark){#bpage.b_med .toggle_img .bgOverlay,#bpage.b_med .toggle_img.toggle_on .bg{fill:#a19f9d}#bpage.b_med .toggle_img.overlay.toggle_on .indicator,#bpage.b_med .toggle_img circle.indicator,#bpage.b_med .toggle_img.overlay .indicator{fill:#faf9f8}}#bpage.b_drk .toggle_img .bgOverlay,#bpage.b_drk .toggle_img.toggle_on .bg{fill:#a19f9d}#bpage.b_drk .toggle_img.overlay.toggle_on .indicator,#bpage.b_drk .toggle_img circle.indicator,#bpage.b_drk .toggle_img.overlay .indicator{fill:#faf9f8}#b_results .b_algo.b_algoBigWiki.b_algoBorder{position:relative;margin-bottom:36px}#b_results .b_algoBigWiki .b_attribution{font-size:13px;line-height:18px}#b_results .b_algoBigWiki .b_caption{padding-bottom:8px}.b_wiki_bottom_cover{overflow:hidden;position:absolute;bottom:0;left:0;width:100%;height:46px;border-radius:6px;z-index:1}.b_wiki_cover{position:absolute;width:100%;height:46px;bottom:0;left:0;background:linear-gradient(0deg,#fff,rgba(255,255,255,0));background-repeat:no-repeat}#b_results .b_algo .wiki_seemore:hover{color:#fff}#b_results .wiki_seemore{display:table;left:50%;bottom:0;transform:translate(-50%,50%);color:#fff;background:#106ebe;position:absolute;height:40px;border-radius:20px;cursor:pointer;z-index:1;text-decoration:none;white-space:nowrap;box-shadow:0 2px 3px rgba(0,0,0,.1),0 -1px 1px rgba(0,0,0,.1);-webkit-box-shadow:0 2px 3px rgba(0,0,0,.1),0 -1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 2px 3px rgba(0,0,0,.1),0 -1px 1px rgba(0,0,0,.1);transition:.3s}#b_results .wiki_seemore:hover{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18);-webkit-box-shadow:0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18);-moz-box-shadow:0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18);background:#106ebe}#b_results .wiki_seemore:visited,#b_results .wiki_seemore:active{color:#fff;background:#00526b}.wiki_seemore div{font-size:13px;line-height:20px;margin-left:20px;padding:10px 0 10px;display:inline-block}.wiki_seemore img{margin-right:16px;margin-left:5px;width:12px;position:relative;vertical-align:text-bottom;transform:rotate(90deg)}.wiki_seemore#wiki_expand{display:none}.wiki_seemore#wiki_expand img{transform:rotate(0deg);transform-origin:50% 50%}.b_rcgb_license,.b_wiki_license{display:inline-block;padding:5px 0 0 0;font-size:11px;position:absolute}.b_rcgb_license .rcgb_attr,.b_wiki_license .wiki_attr{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#b_results .b_algoBigWiki .scs_child_rpr{display:none}#b_results .b_algo.b_algoBigWiki.b_algoBorder .scs_child_rpr{display:none}#b_results .b_algo .b_vlist2col.b_deep{color:#767676}#b_results .b_algo .b_vlist2col.b_deep ul{width:274px}#b_results .b_algo .b_vlist2col.b_deep,#b_results .b_algo .b_deep.b_moreLink{padding-left:16px}#b_results .b_algo .b_vlist2col.b_deep>ul:first-child{margin-right:0}#b_results .b_algo .b_vlist2col.b_deep>ul:nth-child(2){margin-left:44px}#b_results .b_algo form.b_externalSearch{margin-left:16px}#b_content #b_results .tpcn .tpic .wr_fav{border-radius:6px}#b_results .tpcn .tpic .wr_fav .siteicon img{border-radius:4px}#b_results .tpcn .sw_ddgn:after{transform-origin:-180px -52px}#b_results .b_algo{position:relative}#b_results .b_algo .tpic .wr_fav{position:relative}#b_results .tpic .wr_fav .siteicon img{width:16px;height:16px;position:absolute;border-radius:4px;left:5px;top:5px}#b_results .tpic .wr_fav img.siteicon.rms_img{width:16px;height:16px}#b_results .tilk{display:flex}.b_algo{position:relative}#b_results .b_algo .tpcn{border-bottom:none;padding:0 0;margin:0 0;display:flex;position:relative}.b_algo .tpcn>.tilk,.b_algo .tpcn strong>.tilk{padding-bottom:4px}.b_algo .tpcn .tpic{display:flex;height:38px;flex-direction:row;align-items:center;margin-right:8px}#b_results .b_algo .tpcn .b_attribution{padding-bottom:0;padding-top:0;margin-top:0;height:20px;line-height:20px;font-size:13px;display:flex}#b_results .b_algo .tpic .wr_fav{width:26px;height:26px;text-align:center;border:1px solid #ececec;background-color:#f5f5f5;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:0}.tpcn .tptt{height:18px;padding-bottom:0;line-height:18px;font-size:14px;color:#111}#b_results .tpcn .b_attribution{line-height:20px}.tpcn .b_attribution cite,.tpcn .b_attribution .c_tlbxTrg{color:#444}#b_results .b_algo .gb_lnk:hover{text-decoration:none}.tpmeta{display:flex}#b_results .tpmeta .b_rebateSlug .algoSlug_icon,#b_results .tpmeta .b_algoSlug .algoSlug_icon{margin-bottom:0}#b_results .b_topicon_topslugin .algoSlug_icon{font-size:14px;line-height:16px;color:#71777d;margin-bottom:8px}.tilk:hover{text-decoration:none}#b_results .tpcn .scs_arw,#b_results .tpcn .scs_cls{bottom:-42px}#b_results .tpcn .scs_exp{position:absolute;top:0;right:0}#b_results .wr_fav .siteicon img,#b_results .wr_fav img.siteicon{vertical-align:text-top}#b_results .nattr img.siteicon,#b_results .mattr img.siteicon,#b_results .sh_favicon>img.siteicon{vertical-align:inherit;margin-bottom:-1px}#b_results .nattr span.wr_fav,#b_results .mattr span.wr_fav{margin-right:4px}.wr_fav{margin-right:8px}#b_results .nattr .b_attribution,#b_results .mattr .b_attribution,#b_results .cattr .b_attribution,#b_context .mattr .b_attribution,.wr_fav{display:inline-block}.wr_fav .cico{border-radius:0;display:inline-block;overflow:unset}.b_ansb .wr_fav,.wr_fav.b_hide{display:none}.b_mapImg .cico,.sa_as .cico,#reviews_tp .cico{border-radius:0}.cico{overflow:hidden;border-radius:6px}.clpimg,.clpdimg,.bsimg{width:100%}.cico picture{line-height:0;display:block}a{a:1}z{a:1}.b_caption.b_snippetgobig p{font-size:18px;line-height:24px !important;color:#111}.b_algo.b_algoBorder{box-shadow:0 0 0 1px rgba(0,0,0,.05);border-radius:6px}#b_results>li.b_algoBorder{margin-top:8px;padding-top:15px}#b_results>li.b_algoBorder.b_algo_feedback{margin-bottom:19px;position:relative}.b_gobig_feedback{position:absolute;right:19px;bottom:-21px}#b_results>li.b_algoBorder.b_algo_feedback+li.b_ans.b_mop.b_mopb{margin-top:28px}.b_wiki_sub{display:flex;flex-wrap:wrap}.b_wiki_sub.b_wiki_sub_section{margin-top:16px}.b_wiki_sub_column{flex:48%;max-width:298px;padding:0 6px}.b_wiki_sub_column:first-child{padding-left:0}.b_wiki_sub_column:last-child{padding-right:0}.b_wiki_sub.b_wiki_sub_hero .b_wiki_sub_column{flex:100%;max-width:100%}#b_results .b_wiki_sub:first-child .b_wiki_sub_column:first-child .b_wiki_sub_cell{border-radius:0;padding:0;background:transparent}#b_results .b_wiki_sub:first-child .b_wiki_sub_column:first-child .b_wiki_sub_cell .b_paractl{font-size:16px;line-height:22px}.b_wiki_sub:first-child .b_wiki_sub_column:first-child .b_wiki_see_more{font-size:16px;line-height:22px}.b_wiki_text_wrapper{display:inline}.b_wiki_sub_cell{flex:100%;max-width:100%;margin-bottom:12px;flex-direction:column}.b_wiki_sub_hero .b_wiki_sub_cell{margin-bottom:0}.b_wiki_sub_hero .b_wiki_sub_cell .b_paractl{color:#111}.b_wiki_sub .b_wiki_sub_title{margin-bottom:8px;line-height:20px;font-weight:bold;border-bottom:1px solid #ddd;padding-bottom:8px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#b_results .b_wiki_sub .b_wiki_sub_cell .b_wiki_sub_title a,#b_results .b_wiki_sub .b_wiki_sub_cell .b_wiki_sub_title a:hover{pointer-events:none;color:inherit;background:transparent}#b_results .b_wiki_sub .b_wiki_sub_cell .b_wiki_sub_title{color:#444}#b_results .b_wiki_sub .b_wiki_sub_cell .b_wiki_sub_title a:visited{pointer-events:none}#b_results .b_wiki_sub .b_wiki_sub_cell a.b_wiki_see_more:hover{background-color:transparent}.b_wiki_sub_text{border-radius:8px;padding:12px 16px 16px 16px}#b_results p.b_wiki_space{display:inline-block}#b_results .b_wiki_sub_section p.b_wiki_space{line-height:20px}#b_results .b_wiki_sub .b_paractl{display:inline;text-overflow:ellipsis;line-height:20px}.b_wiki_sub_cell .b_promoteText{font-weight:bold}.b_wiki_sub_image{display:flex;flex-wrap:wrap;justify-content:space-between}.b_wiki_sub_image>.b_wiki_img_wrapper{margin:0 0 0 6px}.b_wiki_sub_image>.b_wiki_img_wrapper:first-child{margin:0 6px 0 0}.b_wiki_sub_image>.b_wiki_img_wrapper:first-child:last-child{margin:0 0 0 0}.b_algoBigWiki .b_wikiRichcard{overflow:hidden}#b_results .b_algoBigWiki{background-size:100% 70px;background-repeat:no-repeat}.b_wiki_bottom_cover .b_wiki_cover{bottom:-2px}#b_results .b_algoBigWiki.b_wiki_bg_color_1{background-image:linear-gradient(4deg,white 45.17%,#f6eeee 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_2{background-image:linear-gradient(4deg,white 45.17%,#faefef 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_3{background-image:linear-gradient(4deg,white 45.17%,#fcf1ed 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_4{background-image:linear-gradient(4deg,white 45.17%,#fbf4ed 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_5{background-image:linear-gradient(4deg,white 45.17%,#f1f6ee 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_6{background-image:linear-gradient(4deg,white 45.17%,#eff5f0 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_7{background-image:linear-gradient(4deg,white 45.17%,#f0f6f5 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_8{background-image:linear-gradient(4deg,white 45.17%,#f0f4f6 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_9{background-image:linear-gradient(4deg,white 45.17%,#eef3f9 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_10{background-image:linear-gradient(4deg,white 45.17%,#eef2f7 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_11{background-image:linear-gradient(4deg,white 45.17%,#eff5fb 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_12{background-image:linear-gradient(4deg,white 45.17%,#f4effb 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_13{background-image:linear-gradient(4deg,white 45.17%,#f0f0f6 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_14{background-image:linear-gradient(4deg,white 45.17%,#f4f1f6 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_15{background-image:linear-gradient(4deg,white 45.17%,#f7eff4 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_16{background-image:linear-gradient(4deg,white 45.17%,#faeff4 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_17{background-image:linear-gradient(4deg,white 45.17%,#f3f2f2 95.21%)}#b_results .b_algoBigWiki.b_wiki_bg_color_18{background-image:linear-gradient(4deg,white 45.17%,#f4f1ef 95.21%)}.b_wiki_bg_color_1{background:#f6eeee}.b_wiki_sub_cell.b_wiki_bg_color_1 strong{color:#7e0b0b}.b_wiki_bg_color_2{background:#faefef}.b_wiki_sub_cell.b_wiki_bg_color_2 strong{color:#b11d1d}.b_wiki_bg_color_3{background:#fcf1ed}.b_wiki_sub_cell.b_wiki_bg_color_3 strong{color:#bb3 30}.b_wiki_bg_color_4{background:#fbf4ed}.b_wiki_sub_cell.b_wiki_bg_color_4 strong{color:#b15600}.b_wiki_bg_color_5{background:#f1f6ee}.b_wiki_sub_cell.b_wiki_bg_color_5 strong{color:#357a0a}.b_wiki_bg_color_6{background:#eff5f0}.b_wiki_sub_cell.b_wiki_bg_color_6 strong{color:#14692e}.b_wiki_bg_color_7{background:#f0f6f5}.b_wiki_sub_cell.b_wiki_bg_color_7 strong{color:#237b76}.b_wiki_bg_color_8{background:#f0f4f6}.b_wiki_sub_cell.b_wiki_bg_color_8 strong{color:#23667b}.b_wiki_bg_color_9{background:#eef3f9}.b_wiki_sub_cell.b_wiki_bg_color_9 strong{color:#1358a9}.b_wiki_bg_color_10{background:#eef2f7}.b_wiki_sub_cell.b_wiki_bg_color_10 strong{color:#11428c}.b_wiki_bg_color_11{background:#eff5fb}.b_wiki_sub_cell.b_wiki_bg_color_11 strong{color:#1b6ac7}.b_wiki_bg_color_12{background:#f4effb}.b_wiki_sub_cell.b_wiki_bg_color_12 strong{color:#671bc7}.b_wiki_bg_color_13{background:#f0f0f6}.b_wiki_sub_cell.b_wiki_bg_color_13 strong{color:#2a237b}.b_wiki_bg_color_14{background:#f4f1f6}.b_wiki_sub_cell.b_wiki_bg_color_14 strong{color:#623c80}.b_wiki_bg_color_15{background:#f7eff4}.b_wiki_sub_cell.b_wiki_bg_color_15 strong{color:#8a185d}.b_wiki_bg_color_16{background:#faeff4}.b_wiki_sub_cell.b_wiki_bg_color_16 strong{color:#ba175c}.b_wiki_bg_color_17{background:#f3f2f2}.b_wiki_sub_cell.b_wiki_bg_color_17 strong{color:#5a4b4b}.b_wiki_bg_color_18{background:#f4f1ef}.b_wiki_sub_cell.b_wiki_bg_color_18 strong{color:#65361c}#b_results .b_algoBigWiki.b_wiki_bg_color_kc{background-image:linear-gradient(4deg,white 45.17%,var(--KcWpPrimary,#eff5fb) 95.21%)}.b_algo .b_caption .b_rc_gb_sub_cell p{display:initial;-webkit-line-clamp:initial;-webkit-box-orient:initial;overflow:initial}#b_results .b_algo.b_algoBigWiki .b_caption{padding-bottom:0}.b_caption .b_rc_gb_sub_hero p strong,.b_caption .b_rc_gb_sub_hero .b_factrow strong,.b_rc_gb_sub_hero .b_secondaryText strong{color:#111}.b_rc_gb_sub{display:flex;flex-wrap:wrap}div+.b_rc_gb_sub.b_rc_gb_scroll{margin-top:16px}.b_rc_gb_window{overflow:hidden;margin-top:8px}#b_rc_gb_origin .b_rc_gb_sub_column{flex:48%;max-width:298px}.b_rc_gb_scroll .b_rc_gb_sub_column{padding:0 6px}.b_rc_gb_scroll .b_rc_gb_sub_column:first-child{padding-left:0}.b_rc_gb_scroll .b_rc_gb_sub_column:last-child{padding-right:0}.b_rc_gb_sub.b_rc_gb_sub_hero .b_rc_gb_sub_column{flex:100%;max-width:100%}#b_results .b_rc_gb_sub.b_rc_gb_sub_hero .b_rc_gb_sub_column .b_rc_gb_sub_cell{border-radius:0;padding:0;background:transparent}#b_results .b_rc_gb_sub.b_rc_gb_sub_hero .b_rc_gb_sub_column .b_rc_gb_sub_cell p{font-size:16px;line-height:22px}.b_rc_gb_sub.b_rc_gb_sub_hero .b_rc_gb_sub_column .b_rc_gb_see_more{font-size:16px;line-height:22px}.b_rc_gb_sub_cell{flex:100%;max-width:100%;margin-bottom:12px;flex-direction:column}.b_rc_gb_sub_hero .b_rc_gb_sub_cell{margin-bottom:0}.b_rc_gb_sub_hero .b_rc_gb_sub_cell .b_paractl{color:#111}.b_rc_gb_template .b_rc_gb_sub_hero .b_vList>li{font-size:16px;line-height:22px;color:#111}.b_rc_gb_sub .b_rc_gb_sub_title{margin-bottom:8px;line-height:20px;font-weight:bold;border-bottom:1px solid #ddd;padding:0 15px 8px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#b_results .b_rc_gb_sub .b_rc_gb_sub_cell .b_rc_gb_sub_title a,#b_results .b_rc_gb_sub .b_rc_gb_sub_cell .b_rc_gb_sub_title a:hover{color:#444;background:transparent}#b_results .b_rc_gb_sub .b_rc_gb_sub_cell a.b_rc_gb_see_more:hover{background-color:transparent}.b_rc_gb_sub_text{border-radius:8px;padding:12px 16px 16px 16px}p.b_rc_gb_space{display:inline-block}#b_results .b_rc_gb_sub .b_paractl{display:inline;text-overflow:ellipsis;line-height:20px}.b_rc_gb_sub_cell .b_promoteText{font-weight:bold}.b_rc_gb_sub_image{display:flex;flex-wrap:wrap;justify-content:space-between}.b_rc_gb_sub_image>.b_rc_gb_img_wrapper{margin:0 0 0 6px}.b_rc_gb_sub_image>.b_rc_gb_img_wrapper:first-child{margin:0 6px 0 0}.b_rc_gb_sub_image>.b_rc_gb_img_wrapper:first-child:last-child{margin:0 0 0 0}#b_results .b_rc_gb_template{background-size:100% 70px;background-repeat:no-repeat}.b_rc_gb_bottom_cover .b_rc_gb_cover{bottom:-2px}.b_rc_gb_template .b_vList>li{line-height:20px;padding-bottom:0}#b_results .b_rc_gb_template.b_rc_gb_template_bg_1{background-image:linear-gradient(4deg,white 45.17%,#f6eeee 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_2{background-image:linear-gradient(4deg,white 45.17%,#faefef 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_3{background-image:linear-gradient(4deg,white 45.17%,#fcf1ed 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_4{background-image:linear-gradient(4deg,white 45.17%,#fbf4ed 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_5{background-image:linear-gradient(4deg,white 45.17%,#f1f6ee 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_6{background-image:linear-gradient(4deg,white 45.17%,#eff5f0 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_7{background-image:linear-gradient(4deg,white 45.17%,#f0f6f5 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_8{background-image:linear-gradient(4deg,white 45.17%,#f0f4f6 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_9{background-image:linear-gradient(4deg,white 45.17%,#eef3f9 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_10{background-image:linear-gradient(4deg,white 45.17%,#eef2f7 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_11{background-image:linear-gradient(4deg,white 45.17%,#eff5fb 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_12{background-image:linear-gradient(4deg,white 45.17%,#f4effb 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_13{background-image:linear-gradient(4deg,white 45.17%,#f0f0f6 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_14{background-image:linear-gradient(4deg,white 45.17%,#f4f1f6 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_15{background-image:linear-gradient(4deg,white 45.17%,#f7eff4 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_16{background-image:linear-gradient(4deg,white 45.17%,#faeff4 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_17{background-image:linear-gradient(4deg,white 45.17%,#f3f2f2 95.21%)}#b_results .b_rc_gb_template.b_rc_gb_template_bg_18{background-image:linear-gradient(4deg,white 45.17%,#f4f1ef 95.21%)}.b_rc_gb_template_bg_1{background:#f6eeee}.b_rc_gb_sub_cell.b_rc_gb_template_bg_1 strong{color:#7e0b0b}.b_rc_gb_template_bg_2{background:#faefef}.b_rc_gb_sub_cell.b_rc_gb_template_bg_2 strong{color:#b11d1d}.b_rc_gb_template_bg_3{background:#fcf1ed}.b_rc_gb_sub_cell.b_rc_gb_template_bg_3 strong{color:#bb3 30}.b_rc_gb_template_bg_4{background:#fbf4ed}.b_rc_gb_sub_cell.b_rc_gb_template_bg_4 strong{color:#b15600}.b_rc_gb_template_bg_5{background:#f1f6ee}.b_rc_gb_sub_cell.b_rc_gb_template_bg_5 strong{color:#357a0a}.b_rc_gb_template_bg_6{background:#eff5f0}.b_rc_gb_sub_cell.b_rc_gb_template_bg_6 strong{color:#14692e}.b_rc_gb_template_bg_7{background:#f0f6f5}.b_rc_gb_sub_cell.b_rc_gb_template_bg_7 strong{color:#237b76}.b_rc_gb_template_bg_8{background:#f0f4f6}.b_rc_gb_sub_cell.b_rc_gb_template_bg_8 strong{color:#23667b}.b_rc_gb_template_bg_9{background:#eef3f9}.b_rc_gb_sub_cell.b_rc_gb_template_bg_9 strong{color:#1358a9}.b_rc_gb_template_bg_10{background:#eef2f7}.b_rc_gb_sub_cell.b_rc_gb_template_bg_10 strong{color:#11428c}.b_rc_gb_template_bg_11{background:#eff5fb}.b_rc_gb_sub_cell.b_rc_gb_template_bg_11 strong{color:#1b6ac7}.b_rc_gb_template_bg_12{background:#f4effb}.b_rc_gb_sub_cell.b_rc_gb_template_bg_12 strong{color:#671bc7}.b_rc_gb_template_bg_13{background:#f0f0f6}.b_rc_gb_sub_cell.b_rc_gb_template_bg_13 strong{color:#2a237b}.b_rc_gb_template_bg_14{background:#f4f1f6}.b_rc_gb_sub_cell.b_rc_gb_template_bg_14 strong{color:#623c80}.b_rc_gb_template_bg_15{background:#f7eff4}.b_rc_gb_sub_cell.b_rc_gb_template_bg_15 strong{color:#8a185d}.b_rc_gb_template_bg_16{background:#faeff4}.b_rc_gb_sub_cell.b_rc_gb_template_bg_16 strong{color:#ba175c}.b_rc_gb_template_bg_17{background:#f3f2f2}.b_rc_gb_sub_cell.b_rc_gb_template_bg_17 strong{color:#5a4b4b}.b_rc_gb_template_bg_18{background:#f4f1ef}.b_rc_gb_sub_cell.b_rc_gb_template_bg_18 strong{color:#65361c}.b_rc_gb_template .b_algo_EnhanceFacts{display:none}.b_rc_gb_template .b_caption+div{padding-top:6px}.b_rc_gb_sub_cell.b_rc_gb_sub_text,.b_rc_gb_sub_cell .b_promoteText{color:#666}#b_results .b_rc_gb_template .b_rc_gb_sub .b_rc_gb_sub_cell .b_rc_gb_sub_title a{pointer-events:unset}#b_results .b_rc_gb_template.b_algo_feedback .b_gobig_feedback,#b_results .b_algoBigWiki.b_algo_feedback .b_gobig_feedback{display:none}.b_rc_gb_bottom_cover{transition:.3s}.b_rc_gb_bottom_cover .b_rc_gb_cover{height:inherit}.b_rc_gb_template:hover .b_rc_gb_bottom_cover{height:10px}.b_wiki_bottom_cover{transition:.3s}.b_wiki_bottom_cover .b_wiki_cover{height:inherit}.b_algoBigWiki:hover .b_wiki_bottom_cover{height:0}.b_rc_gb_template .sa_uc,.b_algo.b_rc_gb_template .b_algo_group>.b_vPanel{display:none}#b_results .b_rc_gb_window{ max-height: 350px; } #b_rc_gb_origin.b_rc_gb_sub .b_rc_gb_sub_column { max-width: 298px; }.b_rc_gb_sub.b_rc_gb_scroll { height: 246px; }.pvc_title_with_frows{padding-bottom:10px}.paratitle .actionmenu{float:right;margin-top:-26px}.paratitle .actionmenu::after{float:none}.b_paractl,#b_results .b_paractl{line-height:1.5em;padding-bottom:10px}.mc_fh{height:100%;border-radius:6px}.mc_tc_bs{overflow:hidden}#b_results .b_rc_gb_template .b_widgetCtaBtn,#b_results .b_algoBigWiki .b_widgetCtaBtn{display:none}#b_results .b_rc_gb_template .b_rc_gb_w_content a,#b_results .b_rc_gb_template .b_rc_gb_w_header a,#b_results .b_algoBigWiki .b_rc_gb_w_content a,#b_results .b_algoBigWiki .b_rc_gb_w_header a{text-decoration:none}#b_results .b_rc_gb_template .b_rc_gb_source,#b_results .b_algoBigWiki .b_rc_gb_source{font-size:11px;line-height:13px;margin-right:2px;color:#666}.b_rc_gb_w_content{background-color:#fff;border-top-left-radius:10px;border-bottom-left-radius:10px;padding:8px 0 8px 8px}.b_rc_gb_template .b_rc_gb_widget_title,.b_algoBigWiki .b_rc_gb_widget_title{padding-top:0}.b_rc_gb_template .b_rc_gb_w_item,.b_algoBigWiki .b_rc_gb_w_item{padding:8px 8px 8px 12px;line-height:20px}.b_rc_gb_template .b_rc_gb_widget_title,.b_algoBigWiki .b_rc_gb_widget_title{font-size:20px;line-height:24px;padding-top:0;padding-left:0;margin-left:9px;font-weight:bold;color:#111}.b_rc_gb_template .b_rc_gb_widget_link:hover,.b_algoBigWiki .b_rc_gb_widget_link:hover{background-color:rgba(0,0,0,.06);border-top-left-radius:6px;border-bottom-left-radius:6px;font-weight:bold}.b_rc_gb_template .b_widgetContainer,.b_algoBigWiki .b_widgetContainer{width:135px;padding:20px 0 8px 8px}.b_rc_gb_w_item,.b_rc_gb_source{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.b_rc_gb_widget_link.b_rc_gb_w_item{padding-right:8px;font-weight:initial}.b_rc_gb_widget_link.b_rc_gb_w_item{color:#444}.b_rc_gb_header_top{display:flex;padding-left:10px;padding-right:16px;margin-bottom:7px}.b_rc_gb_source{width:0;flex:1}.shared_icon{height:12px;width:12px;vertical-align:top}.b_rc_gb_scroll{height:540px;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none;overflow-y:scroll;position:relative;scroll-behavior:smooth}.b_rc_gb_scroll::-webkit-scrollbar{display:none}#b_results .b_algoBigWiki .b_widgetContainer, #b_results .b_rc_gb_template .b_widgetContainer{ max-height: 350px; }.b_widgetContainer{position:absolute;display:block;visibility:hidden;top:0;left:-17px;background-color:#f2f2f2;border-radius:15px 0 0 15px;width:112px;margin:16px;padding:16px;font-style:normal;z-index:-1;overflow:hidden}.b_hangingWidgetContainer{left:-144px;position:fixed;opacity:1;transition:opacity 1s;animation:fadein 1s;display:none;background-color:#f2f2f2;border-radius:0 15px 15px 0;width:112px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.1);margin-top:16px;padding:16px;font-style:normal;z-index:-1}.b_lgw_page{position:absolute;left:0;visibility:hidden;background-color:#f2f2f2;border-radius:0 15px 15px 0;width:112px;padding:16px;font-style:normal}.b_widgetGrad{position:absolute;display:block;width:12px;height:-webkit-fill-available;height:100%;top:0;right:0;background:linear-gradient(270deg,rgba(0,0,0,.15) -68.75%,rgba(0,0,0,0) 81.25%)}#b_results>li a.b_widgetCtaBtn{margin-top:12px;display:block;color:#fff;background-color:#106ebe;border-radius:5px 5px 5px 5px;cursor:pointer;border:none;padding-top:6px;padding-bottom:6px;width:112px;text-align:center;text-decoration-line:none}#b_results>li a.b_widgetCtaBtn:hover{text-decoration-line:none;background-color:#0c538f}#b_results>li a.b_widgetCtaBtn:active{text-decoration-line:none;background-color:#012e54}.slide-in{animation:slide-in .5s forwards;-webkit-animation:slide-in .5s forwards}.slide-in-ltr{animation:slide-in-ltr .5s forwards;-webkit-animation:slide-in-ltr .5s forwards}@keyframes slide-in{100%{transform:translateX(-100%)}}@-webkit-keyframes slide-in{100%{-webkit-transform:translateX(-100%)}}@keyframes slide-in-ltr{100%{transform:translateX(100%)}}@-webkit-keyframes slide-in-ltr{100%{-webkit-transform:translateX(100%)}}.slide-in-os{animation:slide-in-os .5s forwards;-webkit-animation:slide-in-os .5s forwards}@keyframes slide-in-os{100%{left:0}}@-webkit-keyframes slide-in-os{100%{left:0}}.slide-in-is{animation:slide-in-is .5s forwards;-webkit-animation:slide-in-is .5s forwards}@keyframes slide-in-is{100%{left:-144px}}@-webkit-keyframes slide-in-is{100%{left:-144px}}.b_lgw_tabs{display:flex;flex-direction:column;align-items:flex-start;background:#fff;padding:4px;border-radius:10px;margin:8px}#b_results .b_lgw_tabs>a.b_lgw_ctaBtn.b_lgw_visible,.b_lgw_tabs>a.b_lgw_ctaBtn.b_lgw_visible{flex:none;order:0;align-self:stretch;flex-grow:0;font-weight:400;font-size:12px;line-height:14px;color:#666;text-decoration-line:none;padding:8px;border-radius:6px}#b_results .b_lgw_tabs>a.b_lgw_ctaBtn:hover,.b_lgw_tabs>a.b_lgw_ctaBtn:hover{color:#666;background:rgba(0,0,0,.06)}#b_results .b_lgw_tabs>a.b_lgw_ctaBtn:active,.b_lgw_tabs>a.b_lgw_ctaBtn:active{color:#666;background:rgba(0,0,0,.1)}#b_results .b_lgw_tabs>a.b_lgw_ctaBtn.lgw_active,.b_lgw_tabs>a.b_lgw_ctaBtn.lgw_active{color:#444;font-weight:700}.b_lgw_iconsDesc.b_lgw_visible{font-weight:700;color:#444;margin:8px 0}.b_lgw_iconContainer{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;gap:8px}.b_lgw_tabImg{overflow:hidden;border-radius:21px;width:32px;height:32px}.b_lgw_iconBtn:hover::before{content:attr(data-url);height:14px;max-width:200px;overflow:hidden;text-overflow:ellipsis;position:absolute;bottom:-17px;color:#666;background:#f5f5f5;z-index:1;padding:4px 10px;border-radius:12px;border:1px solid #ececec;box-shadow:0 .6px 1.8px rgba(0,0,0,.1),0 3.2px 7.2px rgba(0,0,0,.13)}.b_lgw_iconBtn::before{transition:none}.b_lgw_iconBtn:not([data-url]):hover::before{content:none}.b_widgetContainer.pagemodContainer{left:-38px;border-radius:15px;width:144px;padding:4px}.b_widgetGrad.pagemodGrad{display:none}.b_lgw_content{margin:12px}#b_results>li a.b_widgetCtaBtn.pagemodCtaBtn{margin:0 0 4px 8px;width:128px}.b_rcgb_license,.b_wiki_license{display:inline-block;padding:5px 0 0 0;font-size:11px;position:absolute}.b_rcgb_license .rcgb_attr,.b_wiki_license .wiki_attr{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fdbk_thmb_root{display:inline-block;position:relative;float:right}.fdbk_hide{display:none !important}.fdbtext{display:inline-block;margin-right:3px;font-size:11px;line-height:15px;vertical-align:middle;color:#767676}#bpage.b_drk .fdbtext{color:#d2d0ce}.fdbk_thmb_root_mob .fdbtext{font-size:14px;line-height:20px}.fdbk_thmb_root>a{display:inline-block;width:15px;height:15px;margin-left:6px;padding:0;background-size:15px;vertical-align:middle}.fdbk_thmb_root>a.thumb_n{transform:scaleY(-1)}.fdbk_thmb_root_mob.fdbk_thmb_root>a{width:20px;height:20px;background-size:20px}.fdbtext>span,.fdbtext>a{margin-left:4px}.fdbk_thmb_root>a.thumb_y.active{margin-left:0}.fdbk_emotion{display:none;position:absolute;right:0;width:50px;height:50px;opacity:0;animation:emotion 1s ease-in-out .1s 1 normal forwards}.fdbk_emotion .sat_img,.fdbk_emotion .dsat_img{display:none;width:50px;height:50px;opacity:.9}.fdbk_emotion.sat .sat_img,.fdbk_emotion.dsat .dsat_img{display:inline-block}.fdbk_emotion.sat{display:block;margin:-50px 3px 0 0}.fdbk_thmb_root_mob .fdbk_emotion.sat{margin:-50px 11px 0 0}.fdbk_emotion.dsat{display:block;margin:-50px -18px 0 0}.fdbk_thmb_root_mob .fdbk_emotion.dsat{margin:-50px -15px 0 0}@keyframes emotion{50%{opacity:1}100%{opacity:0;-webkit-transform:translateY(-10px)}}.fdbk_thmb_root>a.thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAFMElEQVR4Ac1aa3LTSBBuO4/K40d8g1W4QAIH2Cg5wC7ZAyxeDkBMVV6/sP0vr2JdHAAMB6ASDgDKBYBcAAsugP7k/TBfJzN229FIsl7mq1JpRmpJ8033tLpbKlBOqFardH5+bl9fX1cLhcI8H2u32/sjIyP1ra0tlxKiQDmASZyeni6j+d7ndKtYLC4lJVOkHAASPGEvxSFPtGdvbm4+ViqVEiVALkRgQmXsLNVtXVxczMK8HqDtqmOz4+PjFUqAXIgA/6p9G1u90Wh4ExMTLWjiqZB5lkQrmRPZ2NiwMPu27kMbB7yv1+uE4w605ahTpdHR0XmKicyJYNZt3cbAm6wN3Z+enubdUWcwxeLvSwSDr6pmG673nTwHbbCpHXVFC39QTGRKBGZlU3eRu3t7e06/DLTgiu4MxUSmRGBWHW1gq1OGyIwIa0Mschczf0gZIjMiQhuMd2mEIUHIhIiPNpomWRC2dBtr/wfFRCZEpDYwuLcmbYAsCU/F68ijmEidyPr6+uOo2gAKINp5m+O6FsXEKKWP/3WDtbGzs+OaBI+Pj3k3p/vQ5HeKiVQ1sra2Vibx3tjd3a0FyUNbpHMTBuS/UkykRkTFVNJT1YLka7Xb0xY2bVqxSTBSMy2EHzXMsKW6LkzqbZA8RydXV1fzyBD1oYdYX3KNeJD5isk5wL32KQSpEIFJreCBT3Qf7cWwa9hjgcRc32GrT4bNrswEw7LIxKYFEvN4YEP3MYv17e1tN8q1kOWQPoosZ5HfQOiJSSBRzs7rAoP5RN2Z3IcZLFNC8Po5OzuzYK62WneWOsUB8yM/pxBbIz4kXDz0OaUAJsJmhHyliXsu8VpRpzjU9ytgxCNiILEY1aSigglNTk62Li8vl6hrghae/3e/7MBEOI4CiS+UMQkNJjMzM/MTa+SVOlRAu9wvF9lrMQGOoUDCFoczJaHBHg6uuolKy0vVn7snE3YTNiMQeCMLCAq5kNCAx+KxfqM7S2jDqfRYk1EjrNKTk5NlaOA1BizLND+xvUI1pCELCVmDtSIDzH74EmESCOge9nmIoRDQ40G10qKAcMaXiOd5JdijJPEFb9Z/ss7yTLgrtnTf+ujfi5J9iYyNjT2m3hLnUt5akFBmtaC6bfTv5f8m97uiG1zWHCYJBV7oMm+J9mYXOYLnV4vKG3A6rBFL9+GKBw9RVN4wVKjcvjO5fhZiIuKqfYmDNxoi+CMRYOu+iLt6YCJyKC6coyFDlozgPY/8ZIqGCyXr0CQpS3C4S92Fzn7Y8ZMzaaRDRM7GMBC10uJLRHoFTMjCMBd81EqLLxHlFVzVLWFWYn+ASQKeQGiAnx1aaTG6X5VPa6wMQysqNOlMIjRjJGKMflHhaGA2VtQNyngpfUcoXZ+amrpNnHkNZk2OP2sDL1T33hcvicB8BAOvYSeLbi5/vMTNPyD+chCTecirb7+g8cfNNKHSiJp4fgs5yAOTfGhipci88JNVpA5VEOcgv05FWyKN+Kwfhe2/oKJfpHKQquk+E97D7zp2EA62AyYGPi6bIQbVpgGg/llZhFlzGnG7yHG/N8hEnwZdN1Bda3NzU9ea/qK7sKEUcA9thgdshmERNGtB5UEV6jVnTiMehV2fqEC3urpqw89zVeVPkdP73lObIeQdJGiOPq7/GoIGON9gEjKdjfzDTWp/B/HvF/B0NjauOfGgrJD7e2qzDOeb0MTzqLlQZr85CTNkYjb1zrQRrDmuHw+aB+X2vxa8kDbDBeU0NDFeS/yJ7gjE9+Mmcr8Ajwab99efeF4AAAAASUVORK5CYII=)}.fdbk_thmb_root>a:hover,.fdbk_thmb_root>a:active,.fdbk_thmb_root>a.active{background-image:url(/rp/oIh0lv8-r1C0l7JNB8ZsnpYC90s.png)}.b_wikiRichcard_noHeroSection{content-visibility:auto;contain-intrinsic-size:1px 218px}#b_results .b_wikiRichcard p{display:inline;line-height:22px}.b_wikiRichcard .b_promoteText{font-weight:bold}.b_wikiRichcard .tab-head{border-bottom:1px solid #ddd;margin-bottom:12px}#b_results>li .b_wikiRichcard .wikiRichcard_heroSection{padding-bottom:12px}#b_results>li .b_wikiRichcard .wikiRichcard_heroSection p{color:#111}#b_results>li .b_wikiRichcard .tab-content p,#b_results>li .b_wikiRichcard .tab-content a{color:#444}#b_results>li .b_wikiRichcard .tab-container a{border-bottom:1px dashed #ccc}#b_results>li .b_wikiRichcard a.b_mopexpref{border-bottom:none}#b_results>li .b_wikiRichcard .tab-container a:hover{background-color:#ebf4ff;height:20px;border-radius:2px;text-decoration:none}#b_results>li .b_wikiRichcard .inline>a:hover{background-color:transparent;text-decoration:none}#b_results>li .b_wikiRichcard a[href*=\"wikipedia.org\"],#b_results>li .b_wikiRichcard a[href*=\"wikipedia.org\"]:hover,#b_results .b_wikiRichcard .wiki_attr a,#b_results .b_wikiRichcard .wiki_attr a:hover{border-bottom:none}#b_results>li .b_wikiRichcard a[href*=\"wikipedia.org\"]:hover,#b_results .b_wikiRichcard .wiki_attr a:hover{text-decoration:underline;background-color:#fff}.b_wikiRichcard .wiki_attr{padding-bottom:10px;line-height:1.2em}#b_results>li .b_wikiRichcard_noHeroSection .b_wikiRichcard p{line-height:20px;color:#666;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;padding-bottom:0}.b_wikiRichcard_noHeroSection .b_imagePair .b_wikiRichcard_image{float:right;margin-top:2px}.b_wikiRichcard_noHeroSection .b_wikiRichcard .b_clearfix.b_overflow{line-height:20px}.b_wikiRichcard_noHeroSection .b_imagePair .b_wikiRichcard_image_caption{margin-right:110px}.b_wikiRichcard_noHeroSection .b_imagePair .sml{display:none}#b_results li.b_algoBigWiki:hover h2 a{text-decoration:underline}.b_wikiRichcard_noHeroSection .b_floatR_img{padding:0 0 10px 10px}.tab-container{overflow:hidden;margin:0 auto;white-space:nowrap;padding-bottom:10px}.tab-head{display:inline-block;margin-bottom:10px;width:100%}.tab-menu{display:inline-block;overflow:hidden;vertical-align:top;width:100%}.tab-menu.tab-hasnav{margin-left:2px;margin-right:2px;height:32px;line-height:32px}.tab-menu ul{list-style:none;margin-left:0}.tab-menu ul.sp_1{transition:margin 320ms cubic-bezier(.3,.55,.1,1)}.tab-menu ul.sp_2{transition:margin 400ms cubic-bezier(.3,.55,.1,1)}.tab-menu ul.sp_3{transition:margin 460ms cubic-bezier(.3,.55,.1,1)}.tab-menu ul.sp_4{transition:margin 560ms cubic-bezier(.3,.55,.1,1)}.tab-menu ul.sp_5{transition:margin 680ms cubic-bezier(.3,.55,.1,1)}.tab-menu.tab-flex ul{display:flex}ul.tab-notrans{transition:none}.tab-menu li,.tab-navl,.tab-navr{display:inline-block;cursor:pointer;text-align:center;line-height:32px;height:32px;width:32px}@media screen and (-ms-high-contrast:active){.tab-navr svg,.tab-navl svg{fill:WindowText}}.tab-menu li.tab-active,.tab-navl.tab-disable,.tab-navr.tab-disable{cursor:default}@media screen and (-ms-high-contrast){.tab-menu li.tab-active{border-bottom:1px solid WindowText;height:30px}}.tab-menu li{padding:0 16px;margin-right:2px}.tab-fullwidth li{margin-right:0}.tab-navl.tab-disable,.tab-navr.tab-disable{background-color:#ececec}.tab-navl.tab-disable:hover,.tab-navr.tab-disable:hover{background-color:#ececec}.tab-navl.tab-disable .sv_ch,.tab-navr.tab-disable .sv_ch{fill:#444;opacity:.2}.tab-navl.tab-disable .sv_ch:hover,.tab-navr.tab-disable .sv_ch:hover{fill:#444;opacity:.2}.tab-navl:hover,.tab-navr:hover{background-color:#f5f5f5}.tab-navl .sv_ch:hover,.tab-navr .sv_ch:hover{fill:#111}.tab-menu li.tab-active{line-height:32px}.tab-menu.tab-fullwidth li.tab-active{box-shadow:none;line-height:32px;background-color:#ececec;color:#111;border:0;border-top:none}.tab-content{white-space:normal}.tab-hide{display:none}.tab-ajaxLoad{background:url(/rp/Dq3c4WiQf6W_1npctmuqOl5qkG0.gif) no-repeat;width:40px;height:60px;background-size:40px 40px;margin:0 auto;position:relative;top:60px;padding-bottom:30px;transform:translateY(-30px);animation:.4s linear 0s 1 normal forwards delayLoader}@keyframes delayLoader{0%{opacity:0}99%{opacity:0}100%{opacity:1}}.tab-ajaxCompleted{transition:transform .32s cubic-bezier(.3,.55,.1,1)}.tab-ajaxError{margin:30px 0 0;text-align:center}.tab-menu.tab-flex>ul>li{box-sizing:border-box}.tab-menu li{overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:top}.tab-menu li:last-child{margin-right:0}.tab-head,.tab-menu>ul{height:32px}.tab-head.tab-customLight .tab-menu li{background-color:transparent;color:#444;opacity:.8}.tab-head.tab-customDark .tab-menu li{background-color:transparent;color:#fff;opacity:.8}.tab-head.tab-customLight .tab-menu li:hover,.tab-head.tab-customDark .tab-menu li:hover{box-shadow:none;border-top:0}.tab-head.tab-customLight .tab-navl,.tab-head.tab-customLight .tab-navr,.tab-head.tab-customDark .tab-navl,.tab-head.tab-customDark .tab-navr{background-color:transparent}.tab-head.tab-customLight .tab-menu li.tab-active{box-shadow:inset 0 -3px 0 0 #444;opacity:1}.tab-head.tab-customDark .tab-menu li.tab-active{box-shadow:inset 0 -3px 0 0 #fff;opacity:1}.tab-head.tab-customLight .tab-menu.tab-fullwidth li,.tab-head.tab-customDark .tab-menu.tab-fullwidth li{box-shadow:none;border-top:0;font-weight:normal}.tab-head.tab-customLight .tab-navl span,.tab-head.tab-customLight .tab-navr span,.tab-head.tab-customDark .tab-navl span,.tab-head.tab-customDark .tab-navr span{background-image:url(/rp/S9lIHAMBy7JxaR5m1KRvMwDswyw.png);background-size:30px 150px;background-repeat:no-repeat;width:100%;height:100%;margin:0;display:block}.tab-head.tab-customLight .tab-navl span,.tab-head.tab-customLight .tab-navr span{background-position:0 -60px}.tab-head.tab-customDark .tab-navl span,.tab-head.tab-customDark .tab-navr span{background-position:0 0}.tab-head.tab-customLight .tab-navl span,.tab-head.tab-customDark .tab-navl span{transform:scaleX(-1)}.tab-head.tab-customLight .tab-navl.tab-disable span,.tab-head.tab-customLight .tab-navr.tab-disable span,.tab-head.tab-customDark .tab-navl.tab-disable span,.tab-head.tab-customDark .tab-navr.tab-disable span{background-position:0 -30px}.tab-menu li,.tab-navl,.tab-navr{color:#737373}.tab-menu li{background-color:#eee;color:#444}.tab-fullwidth li{background-color:#eee}.tab-navl,.tab-navr{background-color:#eee;user-select:none}.tab-menu li:hover{box-shadow:inset 0 -3px 0 0 #ccc;background-color:#f5f5f5;color:#111;border-top:none}.tab-menu li.tab-active{box-shadow:inset 0 -3px 0 0 #de3700;background-color:#ececec;color:#111;border-top:none}.b_ad .tab-flex li:hover,.tab-flex li:hover{box-shadow:inset 0 -3px 0 0 #ccc;background-color:#f5f5f5;color:#111;border-top:none}.b_ad .tab-flex li.tab-active,.tab-flex li.tab-active{box-shadow:inset 0 -3px 0 0 #de3700;background-color:#ececec;color:#111;border-top:none}@media(forced-colors:active){.b_ad .tab-flex li.tab-active,.tab-flex li.tab-active{position:relative}.b_ad .tab-flex li.tab-active::after,.tab-flex li.tab-active::after{content:\"\";background-color:#de3700;display:block;position:absolute;bottom:0;left:0;width:100%;height:3px;forced-color-adjust:none}}.b_ans .b_sideBleed,.b_algo .b_sideBleed,.b_ad .b_sideBleed{margin-left:-20px;margin-right:-20px}.b_ans.b_topborder .b_sideBleed,.b_ans.b_nonfirsttopb .b_sideBleed{margin-left:-19px;margin-right:-19px}.b_topborder .b_bottomBleed,.b_nonfirsttopb .b_bottomBleed{margin-bottom:-10px}.b_tophbb .b_bottomBleed{margin-bottom:-19px}.b_topborder .b_topBleed,.b_nonfirsttopb .b_topBleed{margin-top:-15px}.b_tophbb .b_topBleed{margin-top:-15px}#b_context .b_ans .b_sideBleed{margin-left:-20px;margin-right:-20px}#b_context .b_ad .b_sideBleed{margin-left:-20px;margin-right:-20px}#b_context .b_ans:not(:last-child) .b_bottomBleed{margin-bottom:-5px}#b_context .b_ad:not(:last-child) .b_bottomBleed .b_expando .b_ans .b_bottomBleed{margin-bottom:-15px}#b_context .b_ans .b_topBleed{margin-top:-10px}#b_context .b_ad .b_topBleed{margin-top:-10px}#b_context .b_ans .b_entityTP .b_sideBleed,#b_context .b_ad .pa_sb .b_sideBleed{margin-left:-19px;margin-right:-19px}#b_context .b_ans .b_entityTP .b_topBleed,#b_context .b_ad .pa_sb .b_topBleed{margin-top:-9px}#b_context .b_ans .b_entityTP .b_bottomBleed{margin-bottom:-4px}.b_ans .b_sideBleed .b_antiSideBleed,.b_algo .b_sideBleed .b_antiSideBleed,.b_ad .b_sideBleed .b_antiSideBleed{padding-left:20px;padding-right:20px}.b_ans.b_topborder .b_antiSideBleed,.b_ans.b_nonfirsttopb .b_antiSideBleed{padding-left:19px;padding-right:19px}.b_topborder .b_bottomBleed .b_antiBottomBleed,.b_nonfirsttopb .b_bottomBleed .b_antiBottomBleed{padding-bottom:10px}.b_topborder .b_topBleed .b_antiTopBleed,.b_nonfirsttopb .b_topBleed .b_antiTopBleed{padding-top:15px}.b_tophbb .b_bottomBleed .b_antiBottomBleed{padding-bottom:19px}.b_tophbb .b_topBleed .b_antiTopBleed{padding-top:15px}#b_context .b_ans .b_antiSideBleed{padding-left:20px;padding-right:20px}#b_context .b_ad .b_antiSideBleed{padding-left:20px;padding-right:20px}#b_context .b_ans:not(:last-child) .b_antiBottomBleed{padding-bottom:5px}#b_context .b_ad:not(:last-child) .b_antiBottomBleed,.b_expando .b_ans .b_bottomBleed{padding-bottom:15px}#b_context .b_ans .b_antiTopBleed{padding-top:10px}#b_context .b_ad .b_antiTopBleed{padding-top:10px}#b_context .b_ans .b_entityTP .b_antiSideBleed,#b_context .b_ad .pa_sb .b_antiSideBleed{padding-left:19px;padding-right:19px}#b_context .b_ans .b_entityTP .b_antiTopBleed,#b_context .b_ad .pa_sb .b_antiTopBleed{padding-top:9px}#b_context .b_ans .b_entityTP .b_antiBottomBleed{padding-bottom:4px}.b_vList>li.b_annooverride{padding-bottom:0}a{a:1}@import'./_attribution.scss';.recommendationsTableTitle{border-top:0}.recommendationsTableTitle h2,.recommendationsTableTitle h3{padding-bottom:8px;font-size:13px;color:#666;text-transform:uppercase}.recommendationsTableFeedback{margin-top:2px;margin-bottom:21px}.recommendationsTableFeedback .fbans .b_footnote,.recommendationsTableFeedback .fbans .hlig{text-align:left !important}.pagereco_DText,.pagereco_DText_M{font-size:11px;line-height:16px;color:#767676}.pagereco_DText{margin:-4px 0 12px}.pagereco_DText_M{padding-top:10px}.pagereco_TRow{display:flex;flex-wrap:wrap;width:100%;line-height:16px;margin-bottom:10px}.pagereco_TRow:not(.pagereco_TRowM) .pagereco_TDomain{width:165px}.pagereco_TRow:not(.pagereco_TRowM) .pagereco_TDomainWithFavicon{width:188px}.pagereco_TTitle{flex:1}.pagereco_TTitle a:hover{text-decoration:none}.pagereco_TTitle .b_title:hover{text-decoration:underline}.pagereco_TDomain a:hover{text-decoration:underline;color:#006d21 !important}.pagereco_TRow .b_title,.pagereco_TRow .b_attr{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.pageRecoContainer .b_fpl_cntr{display:flex}.pageRecoContainer .b_fpl_cntr .b_fpl_icon{display:inline-block;margin-right:8px;height:16px}.pageRecoContainer .b_fpl_cntr .b_fpl_icon .cico{border-radius:2px}.rpr_dark .pageRecoContainer .b_fpl_cntr .b_fpl_icon .cico{background-color:#faf9f8}.pageRecoContainer .pagereco_TRow.pagereco_TRowM .b_fpl_icon{margin-top:3px}.pageRecoContainer .b_fpl_attr{display:inline-block}.fbans>div>a,.fbans>div>a:visited{color:#767676 !important}.fbans{padding-right:19px;margin-top:-4px;margin-bottom:-9px}.fbans .b_footnote,.fbans .hlig{padding:0;text-align:right}.b_imgcap_altitle p strong,.b_imgcap_altitle .b_factrow strong{color:#767676}#b_results .b_imgcap_altitle{line-height:22px}.b_hList img{display:block}.b_imagePair .inner img{display:block;border-radius:6px}.b_algo .vtv2 img{border-radius:0}.b_hList .cico{margin-bottom:10px}.b_title .b_imagePair>.inner,.b_vList>li>.b_imagePair>.inner,.b_hList .b_imagePair>.inner,.b_vPanel>div>.b_imagePair>.inner,.b_gridList .b_imagePair>.inner,.b_caption .b_imagePair>.inner,.b_imagePair>.inner>.b_footnote,.b_poleContent .b_imagePair>.inner{padding-bottom:0}.b_imagePair>.inner{padding-bottom:10px;float:left}.b_imagePair.reverse>.inner{float:right}.b_imagePair .b_imagePair:last-child:after{clear:none}.b_algo .b_title .b_imagePair{display:block}.b_imagePair.b_cTxtWithImg>*{vertical-align:middle;display:inline-block}.b_imagePair.b_cTxtWithImg>.inner{float:none;padding-right:10px}.b_imagePair.square_mp>.inner{width:80px}.b_imagePair.square_mp{padding-left:90px}.b_imagePair.square_mp>.inner{margin:2px 0 0 -90px}.b_imagePair.square_mp.reverse{padding-left:0;padding-right:90px}.b_imagePair.square_mp.reverse>.inner{margin:2px -90px 0 0}.b_imagePair.square_s>.inner{width:50px}.b_imagePair.square_s{padding-left:60px}.b_imagePair.square_s>.inner{margin:2px 0 0 -60px}.b_imagePair.square_s.reverse{padding-left:0;padding-right:60px}.b_imagePair.square_s.reverse>.inner{margin:2px -60px 0 0}.b_ci_image_overlay:hover{cursor:pointer}.insightsOverlay{position:fixed;top:5%;left:5%;bottom:5%;right:5%;width:90%;height:90%;border:none;border-radius:15px;margin:0;padding:0;overflow:hidden;z-index:9;display:none}.b_greyBackgroundModal{display:none;position:fixed;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:8;background:rgba(0,0,0,.5);pointer-events:none}p>.news_dt{color:#767676}.b_rebateSlug .algoSlug_icon,.b_algoSlug .algoSlug_icon{margin-right:2px;border:1px solid #ececec;color:#666;padding:0 2px;font-size:11px;vertical-align:middle;line-height:11px;border-radius:6px;margin-bottom:3px}.b_rebateSlug .algoSlug_icon{margin-bottom:0;margin-top:3px;float:left}.b_factrow>li.b_sritem,.b_factrow .ssp_expert{font-weight:bold}.b_factrow.b_twofr .b_sritem>.b_sritemp{display:inline;font-weight:normal}.b_factrow.b_twofr .b_sritem{font-weight:bold}.b_factrow.b_twofr .csrc{margin-left:5px}.b_factrow.b_twofr{padding-top:4px}.b_factrow.b_twofr ul:first-child{max-width:calc(50% - 20px)}.b_factrow.b_twofr ul:first-child+ul{max-width:50%}.b_factrow.b_twofr ul li div{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.b_imagePair.wide_wideAlgo .b_factrow.b_twofr .b_vlist2col{display:flow-root}.b_caption>.b_richcard{padding-top:2px}.b_richcard .b_vList{line-height:20px}.b_richcard+.b_factrow{margin-top:-10px}.b_richcard .tab-head{margin-bottom:12px}.rc_herotabheader .tab-head{border-bottom:1px #ddd;border-bottom-style:double}.richcard_heroSection{padding-top:4px;color:#111}.b_richcard .richcard_heroSection .b_vList{line-height:22px}.b_algo .b_vList .RichCardTableTab td{color:#666}.b_dList>li{list-style-type:decimal;margin:0 0 0 20px;padding:0 0 10px}.btm_sml a{line-height:16px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.btm_sml{padding-bottom:10px}.btm_sml .expansionDefaultText,.btm_sml .expansionCustomizedText{display:inline-block;*display:inline;zoom:1}.expandChevronContainer{display:inline-block;*display:inline}.expandChevronContainer.hasExpandText{line-height:16px;vertical-align:middle}.btm_sml .expandChevronContainer>*{margin-left:8px;display:inline-block;*display:inline}.btm_sml .sw_plus,.btm_sml .sw_minus,.sml .sw_plus,.sml .sw_minus{display:inline-block;text-decoration:none;margin:0 5px 1px 0}.b_tblWithExpansion .btm_sml,.b_tblWithExpansion .sml{padding-bottom:10px}.b_relative .btm_sml,.b_relative .sml{letter-spacing:2px}.inline{display:inline-block;margin-left:4px;*display:inline;zoom:1}.sml.inline .sw_plus,.sml.inline .sw_minus{margin:0}.hidden_nostyle{padding:0 !important;margin:0 !important}.exp_slide{overflow:hidden;opacity:1;transition:height ease-in-out 350ms,opacity ease-in-out 350ms}.exp_slide.b_hide{display:block;opacity:0;height:0 !important;padding-top:0 !important;padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important;border-top:0 !important;border-bottom:0 !important}body.exp_scroll{transition:margin-top ease-in-out 350ms}.b_ans .btm_sml{border-top:1px solid #cdcdcd}#b_context .b_ans .btm_sml{border-top:1px solid #ebebeb}.b_ans.b_topborder .btm_sml{border-top:0}#b_results>.b_ans .btm_sml a,#b_results>.b_ans .btm_sml a:visited,#b_context>.b_ans .btm_sml a,#b_context>.b_ans .btm_sml a:visited{color:#444}.b_ans.b_top .btm_sml a,.b_ans.b_top .btm_sml a:hover{background-color:transparent}.b_ans.b_topborder .btm_sml a{background-color:#f9f9f9}.b_ans.b_topborder .btm_sml a:hover{background-color:#eee}.b_dark .b_ans.b_topborder .btm_sml a,.b_dark .b_ans.b_topborder .btm_sml a:hover{background-color:#323130}.b_ans.b_top .btm_sml{padding-bottom:10px}.b_ans.b_top .btm_sml a{margin-bottom:0}.b_ans.b_topborder .btm_sml{padding-bottom:0}.b_ans.b_topborder .sydwrap_wrapper .btm_sml{padding-bottom:10px}.b_ans.b_topborder .btm_sml a{margin-bottom:-10px}.btm_sml a{display:block}.b_ans .btm_sml a{line-height:40px;height:40px}.b_ans.b_topborder .btm_sml a{line-height:48px;height:48px}.b_ans.b_topborder .btm_sml .newexpcont{height:32px;line-height:32px}.b_sydConvMode .b_ans.b_topborder .btm_sml .newexpcont{height:48px;line-height:32px}#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml .b_mopexpref,#b_results .b_ans.b_mop .btm_sml .b_mopexpref{height:16px;line-height:16px;color:#001ba0}.b_ans.b_topborder .btm_sml .b_segoeMDL2{font-family:\"Segoe MDL2 Assets\"}.btm_sml{position:relative}#b_context .b_ans .btm_sml a{line-height:40px;height:40px}.b_top .sa_cpoc .b_expando .btm_sml .expandChevronContainer>*,#b_context .b_ans .btm_sml .expandChevronContainer>*{margin-top:15px;margin-right:0;position:absolute;right:0;top:0}.sa_cpoc .b_expando .btm_sml{border-top:1px solid #bbb}#b_results .b_top .sa_cpoc .b_expando .btm_sml .b_expDesk{text-align:left}#b_results .b_top .sa_cpoc .b_expando .btm_sml a{margin:0}#b_results .b_top .sa_cpoc .b_expando .btm_sml .expansionCustomizedText{color:#444}.b_top .sml.topanswer a,.b_top .btm_sml a{background-color:#f9f9f9;margin:0 -19px -10px -19px;display:block;text-decoration:none;text-align:center}.b_top .sml.topanswer a{line-height:35px;outline:none}.b_top .btm_sml .leftAlign{text-align:left}.b_top .btm_sml a{line-height:40px;height:40px;vertical-align:middle}.b_top .btm_sml{padding-bottom:0}.b_top .btm_sml a:hover,.b_top .sml.topanswer a:hover{background-color:#eee}.b_top .btm_sml a .expansionDefaultText{display:none;text-align:center}.b_top .btm_sml .leftAlignWithPadding,.b_top .btm_sml a .expansionCustomizedText{text-align:left;padding:0 0 0 19px;display:inline-block;*display:inline;zoom:1}.b_sydConvMode .b_top .btm_sml .leftAlignWithPadding,.b_sydConvMode .b_top .btm_sml a .expansionCustomizedText{padding:0}.b_top .btm_sml .expandChevronContainer.hasExpandText{line-height:40px;vertical-align:middle}.b_sydConvMode .b_top .btm_sml .expandChevronContainer.hasExpandText{margin-top:-4px}.b_top .btm_sml .expandChevronContainer.hasExpandText .smallLandscape{line-height:48px}.b_top .btm_sml .expandChevronContainer>*{margin:0 19px 0 12px}.b_top .btm_sml .expandChevronContainer.noExpandText>*{margin:0}#b_topw .btm_sml a,#b_topw .btm_sml a:visited,#b_results>.b_top .btm_sml a,#b_results>.b_top .btm_sml a:visited{color:#444}.e_mhdr .btm_sml a{padding:0;border-top:0;margin-top:10px}#b_results .b_expando .b_entityTP .btm_sml a{height:40px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer{display:inline-block}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer.hasExpandText{line-height:16px;vertical-align:middle}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer>*{display:inline-block;position:absolute;right:0;top:0;margin-top:15px;margin-right:0;margin-left:8px;box-shadow:none}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronUp,#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronDown{overflow:hidden;line-height:9px;height:9px;width:16px}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronDown::after,#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronUp::after{position:relative}#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronDown::after,#b_results .b_expando .b_entityTP .btm_sml a .expandChevronContainer .chevronUp::after{content:url(/rp/ak5A-kIzM-v9JjRbH7FaoGRYoEw.png)}#b_results .b_top .btm_sml .expandChevronContainer.hasExpandText{margin-top:-4px}#b_results .b_top .btm_sml .b_expDesk{height:48px}#b_results .b_top .btm_sml .b_expDeskNoText{height:32px}#b_results .b_ans.b_topborder .btm_sml .newexpcont{height:auto}#b_results .b_topborder .chevronContainerDown:hover{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18)}#b_results .b_topborder .chevronContainerDown,#b_results .b_topborder .chevronContainerDown:active{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 2px 3px 0 rgba(0,0,0,.1)}#b_results .b_topborder .chevronContainerUp:hover{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 -2px 4px 1px rgba(0,0,0,.18)}#b_results .b_topborder .chevronContainerUp,#b_results .b_topborder .chevronContainerUp:active{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 -2px 3px 0 rgba(0,0,0,.1)}#b_results .b_top .btm_sml a .expansionCustomizedText{padding:0}#b_results .b_top .btm_sml a .b_expcol{padding:0;color:transparent}#b_results .b_top .sydwrap_wrapper .btm_sml a .b_expcol{color:#444}#b_results .b_topborder .b_expwide{margin-left:50%}#b_results .b_topborder .b_expChevTOP{margin-left:50%}#b_results .b_top .btm_sml.b_expV3,#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml.b_expV3{display:flex;align-items:center;justify-content:center}#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml.b_expV3{padding-bottom:0}#b_results .b_top .btm_sml.b_expV3 a,#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml.b_expV3 a{box-shadow:0 2px 3px 0 #000;box-shadow:0 2px 3px 0 rgba(0,0,0,.1);border:1px solid #ddd;color:#666;height:40px;line-height:40px;border-radius:20px;padding-left:20px;padding-right:20px;background-color:#fff;margin-bottom:-30px}#b_results .b_top .btm_sml.b_expV3 a svg,#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml.b_expV3 a svg{padding-left:10px}#b_results .b_top .btm_sml.b_expV3 a:hover,#b_results .b_ans:not(.b_top):not(.b_topborder) :not(.b_entityTP) .btm_sml.b_expV3 a:hover{box-shadow:0 2px 4px 1px #000;box-shadow:0 2px 4px 1px rgba(0,0,0,.14);border:1px solid #ccc;color:#111}#b_results .b_top.b_tophb .btm_sml.b_expV3 a{margin-bottom:-35px}.cipt,.cipg,.cipa,.cipl,.ciptr,.ciplr{display:inline-block}.cipa,.cipl,.ciplr{cursor:pointer}.vab{vertical-align:bottom}.vam{vertical-align:middle}.vat{vertical-align:top}.vabl{vertical-align:baseline}.vatt{vertical-align:text-top;border-radius:0}.vatb{vertical-align:text-bottom}.ChevronDown12,.ChevronUp12{background:url(/rp/LqeCNbDYunOy9MfrovF1ja76LIM.png) no-repeat;background-size:398px 58px;width:12px;height:12px}.ChevronDown12{background-position:-372px 0}.ChevronUp12{background-position:-372px -14px}@media(prefers-color-scheme:dark){#bpage.b_med .ChevronDown12{background-position:-386px 0}#bpage.b_med .ChevronUp12{background-position:-386px -14px}}#bpage.b_drk .ChevronDown12{background-position:-386px 0}#bpage.b_drk .ChevronUp12{background-position:-386px -14px}.cipt,.cipl{margin-right:10px}.cipt .cico,.cipl .cico,.ciptr .cico,.ciplr .cico{border-radius:0}.b_action>.cipt,.b_action>.cipl{float:left}.ciptr,.ciplr{margin-left:10px}.sw_play{height:16px;width:16px}:not(.dc_aud_wrp)>.sw_play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAaVBMVEUAAAAAD58AFaQAE6UAFKUAE6QAFKUAEqYAD58AE6QAE6UAFKQAEqUAD6QAE6MAE6QAD6cAE6QAFaQAFKQAEqQAFKUAEqQAFKUAEqIAFKMAEqMAE6MAD58AE6UAE6UAE6IAFKYAFKYAE6MaDJ//AAAAI3RSTlMAEGCfz+//XyCQj79vMEDfIKAwoK/vYL9gcHDPMM9QkK+fnzHYYSkAAAEVSURBVHgBdZMFkuwwEEPVk/ULx8nSMN7/jh/X1dUDKgjpyaTIZavqLUF6q2rTo5o24aoaRVkH9MNokk1DD3QW8AzV7M/zAtlDNGbyqKA5k9+d58OkKPukZFjmU0/0Qf6PdeXGVcDu3wBQphcXpxH+vlioyhtyHRwLrWQeICCEzHyZvunlBmLImo0WtsEQQnZU2jMFQwg5cFTCgiGEGF8CBUMMgReGdCpvng/xaT7Ennc3RFyaOMZlOu7LXLF2Q8GL1tSyROMGx3/O0aSzH1bEyznOUKYZcC/C+XVh2nJT6Yk+yd7giz3wV/LstS8NfvgTPCN0qVkofAk8A+thMsnehzXQmqLmBVdqHXfZ97JPkPa3ldP6DeOGDlAP873EAAAAAElFTkSuQmCC);background-size:16px 16px}.expansionAccessibilityText { display: none; }#b_results li.b_ans.b_mop.b_mopb,#b_results li.b_ans.b_nonfirsttopb{border-radius:6px;box-shadow:0 0 0 1px rgba(0,0,0,.05);margin-top:12px;margin-bottom:10px;padding:15px 19px 10px}#b_results li.b_ans.b_mop.b_mopb .b_sideBleed{margin-left:-19px;margin-right:-19px}.df_alaskcarousel.rqnaContainerwithfeedback{position:relative}.df_alaskcarousel #df_listaa .b_vPanel .df_hd .b_primtxt{color:#00809d;text-transform:initial;font-size:22px}.df_alaskcarousel #df_listaa .b_vPanel>div{padding-bottom:8px}.df_alaskcarousel.rqnaContainer>#fbtop{position:static;float:right;padding-right:19px;margin-top:-4px}.df_alaskcarousel #df_listaa{box-shadow:0 0 0 0 rgba(0,0,0,.05),0 0 0 0 rgba(0,0,0,.05);border:none;margin-bottom:10px;border-radius:6px;content-visibility:visible !important}.df_alaskcarousel.rqnaContainerwithfeedback,.df_alaskcarousel.rqnaContainer{padding-bottom:30px}.df_alaskcarousel.rqnaContainerwithfeedback.decanspad,.df_alaskcarousel.rqnaContainer.decanspad{padding-bottom:12px}.df_alaskcarousel #df_listaa.decfbpad{margin-bottom:0;padding-bottom:4px}.df_alaskcarousel #df_listaa .b_vPanel>div:last-of-type{padding-bottom:0}.df_alaskcarousel #df_listaa .df_item{padding-bottom:5px}.df_alaskcarousel #df_listaa #relatedQnAListDisplay .b_module_expansion .b_expansion_text{color:#111;font-size:16px;line-height:20px;max-width:calc(100% - 46px)}.df_alaskcarousel #df_listaa #relatedQnAListDisplay .b_module_expansion .b_expansion_wrapper.b_expand{border-color:#ececec}.df_alaskcarousel #df_listaa #relatedQnAListDisplay .b_module_expansion .b_expansion_wrapper.b_collapse{border-color:#ddd}.df_alaskcarousel .df_topAlAs .b_collapse.b_onpage_expansion{font-weight:bold}.df_alaskcarousel .df_topAlAs .b_module_expansion_control{padding-bottom:0}.df_alaskcarousel #relatedQnAListDisplay .b_slidebar{border:0 !important}.df_alaskcarousel #df_listaa .b_vPanel>div{padding:0 20px 4px 0}.df_alaskcarousel .df_topAlAs .b_expansion_wrapper{padding:9px 0 9px 0;height:auto;position:relative}.df_alaskcarousel .df_topAlAs .b_expansion_wrapper>.b_expansion_text.b_1linetrunc{white-space:normal}.df_alaskcarousel .df_topAlAs .b_expansion_chevron{padding:0 16px 0 0;position:absolute;right:6px;top:13px}.df_alaskcarousel #df_listaa .df_topAlAs .b_expansion_chevron{padding:0 0 0 0}.df_alaskcarousel .df_topAlAs .b_vPanel .b_module_expansion_control .b_module_expansion .b_expansion_wrapper>.b_expansion_text.b_1linetrunc{font:16px 'Roboto',Sans-Serif}.df_alaskcarousel .df_topAlAs .b_vPanel .b_module_expansion_control .b_module_expansion .b_expansion_wrapper.b_collapse.b_onpage_expansion:not(.b_hide)>.b_expansion_text.b_1linetrunc{font-weight:600 !important;margin-top:2px}.df_alaskcarousel .df_topAlAs .rwrl_cred .b_algo,.vid_algo{font-size:16px;line-height:1.2}.df_alaskcarousel #df_listaa .df_hd{padding:0;color:#767676;margin-left:16px;line-height:26px}.df_alaskcarousel #df_listaa .df_hd .b_mText{font-weight:bold}.df_alaskcarousel .df_hd_ft .df_topAlAs .b_expansion_wrapper{height:36px}.df_alaskcarousel .df_hd_ft .df_topAlAs .b_expansion_chevron{top:12px}.df_alaskcarousel .df_hd_ft .rwrl_cred{font-size:18px}.df_alaskcarousel .df_hd_ft .rwrl_cred .b_attribution{font-size:13px;font-weight:600}.df_alaskcarousel .df_alsocon{overflow:hidden;padding:0 0;color:#444;padding-right:16px;font-weight:400;line-height:22px}.df_alaskcarousel #df_listaa .rwrl_small{padding-bottom:15px !important}.df_alaskcarousel .df_alsocon .rwrl_small u{text-decoration:none}.df_alaskcarousel .df_alsocon .df_fb{line-height:22px !important;font-size:16px !important;padding-bottom:20px !important}.df_alaskcarousel .df_alsocon .df_fs{line-height:22px !important;padding-bottom:20px !important}.df_alaskcarousel .df_alsocon .df_nref{padding-bottom:2px !important}.df_alaskcarousel .df_f{font:14px/normal 'Roboto',Helvetica,Sans-Serif;color:#767676}.df_alaskcarousel #df_ed a,.df_alaskcarousel .b_footnote #df_ed input[type=submit]{color:#71777d !important}.df_alaskcarousel #df_ed input[type=submit]{background:none;border:none;padding:0;font:inherit;color:#001ba0 !important;cursor:pointer}.df_alaskcarousel #df_ed input[type=submit]:hover{text-decoration:underline}.df_alaskcarousel #df_ri{margin-right:10px;width:20px}.df_alaskcarousel #df_listaa .df_rq{padding:15px 0}.df_alaskcarousel #df_listaa .df_hd .b_traits{padding:0}.df_alaskcarousel #df_load{text-align:center;height:60px}#df_moreqna .slide{opacity:0;transform:scale(0);transition-property:opacity,transform;transition-duration:.3s}#df_listaa .df_topicqna .slide{opacity:0;transform:scale(0);transition-property:opacity,transform;transition-duration:.3s}#df_moreqna .slide.transform{opacity:1;transform:none}#df_listaa .df_topicqna .slide.transform{opacity:1;transform:none}.df_alaskcarousel .df_mpaContainer,.df_mQAContainer{padding:0 0}.df_alaskcarousel .df_mpaContainer .ref_comp{padding:0;border:0}.df_alaskcarousel .df_mpaContainer .qna .qna_body{height:auto;font:13px/17px Arial,Helvetica,Sans-Serif;color:#666}.df_alaskcarousel .df_mpaContainer .qna_header{padding:0}.df_alaskcarousel .df_vidContainer{padding:0 20px}.df_alaskcarousel .df_vidContainer img{width:100% !important;height:100% !important}.df_alaskcarousel .df_imgCont{padding-bottom:15px;position:relative;cursor:pointer}.df_alaskcarousel .df_imgCont iframe{width:100%;height:100%}.df_alaskcarousel .df_vidTime{position:absolute;bottom:20px;left:0;background-color:#000;opacity:.75;padding:2px 8px;line-height:20px;color:#fff}.df_alaskcarousel .df_playBut{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px}.df_alaskcarousel .df_qnacontent{display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden;max-height:160px;line-height:22px;margin-bottom:7px;width:268px;height:160px}.df_alaskcarousel .df_qntext{padding-bottom:4px;font-weight:700;color:#111;display:block;unicode-bidi:plaintext}.df_alaskcarousel .df_qnacontent .b_bullet>li{margin-left:19px !important}.df_alaskcarousel .df_qnacontent .b_vPanel>div,.df_alaskcarousel .df_qnacontent .b_vList>li{padding-bottom:0 !important}.df_alaskcarousel .df_alsoAskCard{font-size:16px;padding-bottom:9px;line-height:22px;padding:16px;box-sizing:border-box}.df_alaskcarousel .df_ansatb{font-family:'Roboto',Helvetica,Sans-Serif;font-style:normal;font-size:16px;line-height:22px}.df_alaskcarousel #df_listaa .df_ansatb.ansfont .qna_algo .b_attribution,.df_alaskcarousel #df_listaa .df_ansatb.ansfont .qna_algo .b_algo h2{font-size:14px}.df_alaskcarousel .df_ansatb .qna_algo .b_algo h2,.df_alaskcarousel .df_ansatb .qna_algo .b_attribution{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;line-height:22px}.df_alaskcarousel .df_ansatb .qna_algo .b_algo{padding-bottom:2px}.df_alaskcarousel #relatedQnAListDisplay,#df_listaa .df_topicqna{width:calc(100% + 20px)}.df_alaskcarousel #relatedQnAListDisplay.openAnsWrapper{border:0;height:256px;width:calc(100% + 20px);position:relative}.df_alaskcarousel #relatedQnAListDisplay.openAnsWrapper.openAnsWrapperTravelBanner{height:324px}.df_alaskcarousel #relatedQnAListDisplay.openAnsWrapper .b_slidebar .slide,#df_listaa .df_topicqna.openAnsWrapper .b_slidebar .slide{box-sizing:border-box;width:300px;height:248px;margin-right:8px;display:inline-block}.df_alaskcarousel .df_paaqnaalgo{font-family:'Roboto',Helvetica,Sans-Serif;font-style:normal;font-size:16px;line-height:22px}.df_alaskcarousel #relatedQnAListDisplay.openAnsWrapper .next,#df_listaa .df_topicqna.openAnsWrapper .next{margin-right:32px}.df_alaskcarousel #relatedQnAListDisplay.openAnsWrapper .prev,#df_listaa .df_topicqna.openAnsWrapper .prev{left:16px}.df_alaskcarousel.rqnaContainerwithfeedback .openans_gradient_div{background:linear-gradient(270deg,#fff -26.53%,transparent 100%);width:32px;height:256px;position:absolute;right:0;z-index:1}.df_alaskcarousel.rqnaContainerwithfeedback .openans_gradient_div_tlg{top:30px}.df_alaskcarousel.rqnaContainerwithfeedback .openAnsWrapperTravelBanner .openans_gradient_div{height:calc(100% - 64px)}.df_alaskcarousel.rqnaContainerwithfeedback .openans_gradient_div.left{left:0;right:auto;transform:rotate(-180deg)}.df_alaskcarousel #relatedQnAListDisplay .b_slideexp,#df_listaa .df_topicqna .b_slideexp{margin:0}.df_alaskcarousel .df_ansatb .rwrl_cred{font-size:16px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.df_alaskcarousel #relatedQnAListDisplay>div{border-bottom:none}.df_alaskcarousel .df_alsocon.ansfont{font-size:14px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper{border:0;height:260px;width:calc(100% + 20px);position:relative}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridHeightWrapper{height:264px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridHeightWrapper .b_slidebar .slide,#df_listaa .df_topicqna.hybridAnsWrapper.hybridHeightWrapper .b_slidebar .slide{height:256px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .b_slidebar .slide,#df_listaa .df_topicqna.hybridAnsWrapper .b_slidebar .slide{width:240px;height:252px;box-shadow:0 0 0 1px rgba(0,0,0,.05);cursor:default}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridFlyOutCardWrapper .b_slidebar .slide{cursor:pointer}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .slide.df_alsoAskActiveCard,#df_listaa .df_topicqna.hybridAnsWrapper .slide.df_alsoAskActiveCard{border:1px solid #106ebe}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_alsoAskCard .df_qnacontent,#df_listaa .df_topicqna.hybridAnsWrapper .df_alsoAskCard .df_qnacontent{max-height:160px;width:208px;height:160px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_alsoAskCard .df_alsocon,#df_listaa .df_topicqna.hybridAnsWrapper .df_alsoAskCard .df_alsocon{line-height:20px;font-size:14px}.df_alaskcarousel .df_load_topicslg{padding-bottom:95px;padding-top:95px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb{padding-top:8px;margin-top:18px;border-top:1px solid #ddd}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb .qna_algo .b_algo h2,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb .qna_algo .b_algo h2{font-size:13px;line-height:16px;padding-bottom:0}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_algo h2,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_algo h2{font-size:16px;line-height:18px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb .qna_algo .b_algo,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb .qna_algo .b_algo{padding-bottom:0}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb .qna_algo .b_attribution,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb .qna_algo .b_attribution{font-size:13px;line-height:20px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_attribution,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_attribution{font-size:14px;line-height:20px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_algo,#df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .qna_algo .b_algo{padding-bottom:4px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .next,#df_listaa .df_topicqna.hybridAnsWrapper .next{margin-right:0;z-index:10}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .prev,#df_listaa .df_topicqna.hybridAnsWrapper .prev{left:-6px;z-index:10}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb .rwrl_cred,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper .df_ansatb .rwrl_cred{font-size:13px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .rwrl_cred,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper .df_ansatb.df_ansfontlghybrid .rwrl_cred{font-size:16px}.hybridAnsWrapper .b_overlay .btn.rounded .cr>div{box-shadow:0 2px 3px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 2px 3px 0 rgba(0,0,0,.3)}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridAnsWrapper2 .b_slidebar .slide,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper2 .b_slidebar .slide{width:280px;height:252px;box-shadow:0 0 0 1px rgba(0,0,0,.05);cursor:default}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridAnsWrapper2.hybridHeightWrapper .b_slidebar .slide,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper2.hybridHeightWrapper .b_slidebar .slide{height:256px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridAnsWrapper2.hybridFlyOutCardWrapper .b_slidebar .slide,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper2.hybridFlyOutCardWrapper .b_slidebar .slide{cursor:pointer}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridAnsWrapper2 .df_alsoAskCard .df_qnacontent,#df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper2 .df_alsoAskCard .df_qnacontent{max-height:160px;width:248px;height:160px}#relatedQnAListDisplay.openAnsWrapper.openAnsWrapperTravelBanner .paatrvlBanner{height:64px;display:flex;justify-content:space-between;padding:0 20px;align-items:center;background:#f9f9f9;box-shadow:0 0 0 1px rgba(0,0,0,.05);border-radius:6px;color:#444;margin:4px 3px 0}.ptexploreBtn{border-radius:32px;padding:6px 16px;font-size:14px;line-height:19px;display:flex;gap:12px;align-items:center;background:#106ebe;color:#fff}.ptlearnmoreTxt{font-style:normal;font-size:16px;line-height:22px}#relatedQnAListDisplay.openAnsWrapper.openAnsWrapperTravelBanner .paatrvlBanner:hover{text-decoration:none}.df_alaskcarousel .df_qnacontent .df_qn_syd{width:88%;margin-right:2%;cursor:default;padding-top:4px}.df_alaskcarousel .df_qnacontent .df_dn_sydqncon .df_qn_syd{cursor:pointer}.df_alaskcarousel .df_alsoAskCard .df_dn_content{position:absolute;right:12px;top:16px;width:24px;height:24px;padding:4px}.df_alaskcarousel .df_alsoAskCard .df_dn_content .span_sydney .alsoask_sydney_chat{padding:2px}.df_alaskcarousel .df_alsoAskCard .df_dn_content .span_sydney .alsoask_sydney_chat path{fill:#174ae4}.df_alaskcarousel .df_alsoAskCard .df_qntextwithsydonqn:hover .df_qntext:not(:hover),.df_alaskcarousel .df_qnacontent .df_dn_sydqncon .df_qn_syd:hover{text-decoration:underline}.df_alaskcarousel .df_alsoAskCard .df_dn_content:hover,.df_alaskcarousel .df_alsoAskCard .df_qntextwithsydonqn:hover .df_dn_content:not(:hover){background:rgba(0,0,0,.06);border-radius:6px;cursor:pointer}.df_alsoAskCard .df_dn_content[data-sbtip]:not(.disableTooltip):hover::after,.df_alsoAskCard .df_dn_content[data-sbtip].shtip:not(.disableTooltip)::after{top:35px;left:-20px}.df_alsoAskCard .df_dn_content[data-sbtip]:not(.disableTooltip):hover::before,.df_alsoAskCard .df_dn_content[data-sbtip].shtip:not(.disableTooltip)::before{top:32px;left:17px}.df_alsoAskCard .df_dn_sydqncon[data-sbtip]:not(.disableTooltip):hover::after,.df_alsoAskCard .df_dn_sydqncon[data-sbtip].shtip:not(.disableTooltip)::after{top:35px;right:-48px}.df_alsoAskCard .df_dn_sydqncon[data-sbtip]:not(.disableTooltip):hover::before,.df_alsoAskCard .df_dn_sydqncon[data-sbtip].shtip:not(.disableTooltip)::before{top:32px;right:0}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper .b_slidebar{height:272px}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper .slide:hover{transform:scale(1.06);transition:all .4s;position:relative;z-index:2;top:6px;background:#fff}.b_dark .df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper .slide:hover{background:#323130}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper .slide:first-child:hover{transform-origin:left}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper .slide:last-child:hover{transform-origin:right}.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.df_zmOnHoverWrapper{height:272px}.rqnaCarouselWrapper.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_ansatb,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper .df_ansatb{border:none;padding-top:0;margin-top:0}.rqnaCarouselWrapper.df_alaskcarousel .df_alsoAskCard .df_qntextwithsyd,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper .df_qntextwithsyd,.rqnaCarouselWrapper.df_alaskcarousel .df_alsoAskCard span.df_qntext,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper span.df_qntext{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:44px;margin-bottom:8px}.rqnaCarouselWrapper.df_alaskcarousel .df_alsoAskCard span.df_qntext,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper span.df_qntext{padding-bottom:0}.rqnaCarouselWrapper.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper.hybridAnsWrapper2 .df_alsoAskCard .df_qnacontent,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper.hybridAnsWrapper2 .df_alsoAskCard .df_qnacontent{height:180px;max-height:180px}.rqnaCarouselWrapper.df_alaskcarousel #relatedQnAListDisplay.hybridAnsWrapper .df_alsoAskCard .df_alsocon,.rqnaCarouselWrapper #df_listaa .df_topicqna.hybridAnsWrapper .df_alsoAskCard .df_alsocon{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:4px;padding-top:4px;border-top:1px solid #ddd;padding-right:0}.rqnaCarouselWrapper.df_alaskcarousel .df_qnacontent .df_qn_syd{padding-top:0;padding-bottom:0;margin-bottom:0}.b_traits{color:#00809d;font-size:11px;font-weight:400;line-height:1.2;text-transform:uppercase;letter-spacing:.02em}.b_slideexp{margin-bottom:20px;position:relative}.b_ans>.b_slideexp>.slide:last-child,.b_ans>.b_slideexp:last-child,.b_vPanel .b_slideexp:last-child{margin-bottom:0;padding-bottom:0}.b_slidebar .slide{display:inline-block;vertical-align:top}.b_slidebar .slide,.b_slideexp .b_viewport{overflow:hidden}.b_slideexp .b_viewport{margin:auto}.b_slidebar{white-space:nowrap}.b_slidebar .slide{white-space:normal;position:relative}.b_cards .cico,.b_slidebar .slide .cico{border-radius:0}.b_slidebar,.b_slidebar .slide{width:100%}.b_slidebar.anim{transition:margin-left .35s cubic-bezier(.15,.85,.35,1)}.slide>.spinner{position:absolute;left:50%}.slide>.spinner>.inner{position:relative;left:-50%;width:40px;height:40px;background:url(/rp/OJWYLxkTdSOmE7-V53KpAdOj-xY.gif) no-repeat;margin:40px auto 30px;z-index:1000}.slide_mask.hideSlideMask{visibility:hidden}.b_slidebar.b_autoslidingfade .slide.slide_fading{opacity:1}.slide_mask,.b_slidebar.b_autoslidingfade .slide{transition:opacity .3s linear}.slide_mask.slide_fading,.b_slidebar.b_autoslidingfade .slide{opacity:0}.slide_mask{position:absolute;width:100%;height:100%;opacity:.7;top:0}.carousel_seemore{text-align:center}.carousel_seemore.dark a{color:#fff}.b_slidebar.enable_selecting .slide.selected::after,.b_slidebar.enable_selecting .slide:hover::after{box-shadow:inset 0 0 0 2px #fff}.b_slidebar .slide.selected::after,.b_slidebar .slide:focus::after{box-shadow:inset 0 0 0 2px #0099bc;outline:0}.b_slidebar.enable_selecting .slide.selected::after,.b_slidebar.enable_selecting .slide:hover::after,.b_slidebar .slide.selected::after,.b_slidebar .slide:focus::after{content:\"\";height:100%;width:100%;position:absolute;left:0;top:0}.b_slideexp .b_antiSideBleed{display:inline-block}.carousel_seemore>.b_moreLink.rndChev{vertical-align:middle;height:92px;text-decoration-color:#444;display:inline-block}.carousel_seemore .seeAll_txt{display:block;color:#444;line-height:17px}.carousel_seemore .seeAll_chev{display:block;height:48px;padding-bottom:12px;margin-top:15px}html[dir=\"rtl\"] .carousel_seemore .seeAll_chev{transform:scaleX(-1)}.b_slideexp .b_viewport.scrollbar{overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.b_slideexp .b_viewport.scrollbar::-webkit-scrollbar{display:none}.b_slideexp .b_viewport{-webkit-overflow-scrolling:touch}.b_overlay .btn.rounded{position:absolute;cursor:pointer;z-index:1;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.b_overlay .btn.rounded,.b_overlay .btn.rounded .bg,.b_overlay .btn.rounded .cr,.b_overlay .btn.rounded .cr>div,.b_overlay .btn.rounded .vcac>div{border-radius:50%}.b_overlay .btn.rounded .vcac{height:0}.b_overlay .btn.rounded{height:32px;width:32px;top:50%;margin-top:-16px}.b_overlay .btn.rounded .bg,.b_overlay .btn.rounded:hover .bg{opacity:0}.b_overlay .btn.rtl.rounded .cr{direction:ltr}.b_overlay .btn.hidden.rounded .cr,.b_overlay .btn.disabled.rounded .cr{visibility:hidden}.b_overlay .btn.rounded .cr>div{border:1px solid #ececec;box-shadow:0 2px 3px 0 rgba(0,0,0,.1);height:30px;width:30px;overflow:hidden;background-image:none;background-color:#fff}.b_overlay .btn.rounded .cr>div:hover{box-shadow:0 2px 4px 1px rgba(0,0,0,.14)}.b_overlay .btn.rounded .cr>div:after{bottom:5px;background-color:#fff;transform-origin:-430px 0;display:inline-block;transform:scale(.5);position:relative}.b_overlay .btn.rounded .cr>div:hover:after{transform-origin:-514px 0}.b_overlay .btn.ltr.rounded .cr>div:after{right:5px}.b_overlay .btn.rtl.rounded .cr>div:after{left:5px}.b_overlay .btn.prev.ltr.rounded .cr,.b_overlay .btn.next.rtl.rounded .cr{transform:scaleX(-1)}body .b_overlay .btn.rounded.next{right:-12px}body .b_overlay .btn.rounded.prev{left:-13px}.ra_car_container .b_overlay .btn.prev.ltr.rounded .cr>div,.ra_car_container .b_overlay .btn.next.rtl.rounded .cr>div{transform:unset}.ra_car_container .b_overlay .btn.rounded .cr>div{background-position:0;border:unset}.ra_car_container .b_overlay .btn.rounded .cr>div:after{content:unset}@media screen and (-ms-high-contrast:active){.b_overlay .btn.rounded.hidden *,.b_overlay .btn.rounded.disabled *{background:none}.b_overlay .btn.rounded.hidden,.b_overlay .btn.rounded.disabled{background:none}}.b_overlay .btn.rounded .cr>div:after{content:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png)}.b_overlay{position:relative}.vcac{position:absolute;width:100%;top:50%}.vcac>div{position:relative;width:100%}.qna_algo .qfavc .b_imagePair{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center}.qna_algo .qfavc .b_imagePair>div:last-child{min-width:0;display:flex}.qna_algo .qfavc .cico{margin-right:6px;border-radius:0;flex-shrink:0}.qna_algo .qfavc cite{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qna_algo .qfavc.qsn a{text-decoration:none}.qna_algo .qfavc.qsn .b_imagePair>div:last-child{display:block}.qna_algo .qfavc.qsn .b_imagePair{padding-bottom:0}.qna_algo .qfavc.qsn .b_imagePair .qna_fav{width:26px;height:26px;text-align:center;border:1px solid #ececec;background-color:#f5f5f5;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;margin-right:8px}.qna_algo .qfavc.qsn .b_imagePair .qna_fav .cico{margin-right:0}.qna_algo .qfavc.qsn .sitename{display:block;font-size:14px;line-height:18px;color:#111;white-space:nowrap}.qna_algo .qfavc.qsn cite{color:#444;font-size:14px;line-height:20px}.qna_algo .b_algo.twsn h2{line-height:26px;padding-top:5px}.qna_algo .qfavc:hover+.b_algo.twsn{text-decoration:underline}.tltg{display:inline-block;padding:1px 10px;border-radius:2px}.tltg:first-child{padding-left:0;padding-right:0}.b_dark .tltg:not(:first-child){background-color:#323130}.tltg:not(:first-child){margin-left:8px;background-color:#f5f5f5}#b_results>li .tltg{color:#666}.b_dark #b_results>li .tltg{color:#d2d0ce}a.tltg{text-decoration:none}.tltg strong{pointer-events:none}.b_algo:hover h2>a{text-decoration:underline}#b_results li.b_algo.b_algo_tag_shallow_background{background-color:#f9f9f9;border-radius:8px}.batg{overflow:hidden;line-height:22px;height:24px;margin-top:0;padding-bottom:0}.bstg:hover{cursor:pointer}.bats{height:10px;display:block}.b_caption .batg{padding-top:8px;margin-top:0}.b_caption .bats{height:0}.b_imagePair .batg{padding-top:4px;margin-top:0}#b_results .b_algo .b_attribution .sh_favicon,#b_results .b_algo .b_metadata_separator{display:inline}.wpt_bc_container{margin:0 -3px 0 -3px}.wpt_bc_container cib-serp{max-width:unset;min-height:320px}.b_rs .b_vList,.b_rrsr .b_vList{font-size:13px}#b_results .b_ans .b_rs h2,#b_results .b_rs .b_vlist2col li,#b_results .b_rs .b_vList li{padding-bottom:16px}#b_results .b_ans #brsv3{width:652px;contain-intrinsic-size:652px 296px}#b_results .b_ans #brsv3 h2{padding-bottom:0;font-size:20px;line-height:1.3;color:#202124;margin-bottom:8px}#b_results .b_ans #brsv3 h2 strong{font-weight:normal}#b_results .b_ans #brsv3 .b_vList{padding-top:12px}#b_results #brsv3 .b_vList li{width:318px;padding-bottom:0;margin:4px 0;display:inline-block}#b_results #brsv3 .b_vList li:nth-child(odd){margin-right:16px}#b_results #brsv3 .b_vList li a{max-height:none;min-height:48px;padding:0 17px;background:#f1f3f4;border-radius:100px;box-sizing:border-box;display:flex;align-items:center}#b_results #brsv3 .b_vList li a:hover{text-decoration:underline;color:#202124}#b_results #brsv3 .b_vList li a .b_suggestionIcon{width:20px;height:20px;padding:10px}#b_results #brsv3 .b_vList li a .b_suggestionBk{width:32px;height:32px;padding:0;margin:4px;background:url(/rp/eF3rIdIG4fsLyPy7mzgRnjCDKIA.png) no-repeat -292px 0;transform:scale(.5)}.b_pinrs_ol .b_pinrs .b_suggestionIcon{display:none}#b_results #brsv3 .b_vList li a .b_suggestionIcon svg{width:20px;height:20px}#b_results #brsv3 .b_vList li a .b_suggestionIcon.sug_sprite{background:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png) no-repeat -762px -40px;transform:scale(.5)}#b_results #brsv3 .b_vList a .b_suggestionText{max-width:227px;margin-left:16px;font-style:normal;font-size:16px;line-height:19px;color:#202124;display:-webkit-box;text-align:left;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;overflow:hidden;flex:1}#b_results #brsv3 .b_vList a .b_suggestionText strong{font-weight:bold}.b_rs .b_vlist2col ul:first-child{margin-right:40px}#relatedSearchesLGWContainer{box-sizing:border-box}#relatedSearchesLGWContainer *,#relatedSearchesLGWContainer *:before,#relatedSearchesLGWContainer *:after{box-sizing:inherit}#relatedSearchesLGWContainer{padding:0;box-sizing:border-box;background-color:transparent;border-radius:0;position:fixed;left:0;bottom:120px;transform:translateX(-100%);opacity:0;transition-duration:.5s}#relatedSearchesLGWContainer.rtl{transform:translateX(200%)}#rs_lgw_list{display:flex;flex-direction:column;align-items:flex-start}#rs_lgw_list a{display:grid;grid-template-columns:auto auto auto;background-color:#f1f3f4;border-radius:0 100px 100px 0;align-items:center;margin:10px 12px 0 0;padding:9px 0 9px 0;color:#202124 !important;min-height:50px;text-decoration:none}#rs_lgw_list a:not(:hover) .animation-padding{width:12px;transition-duration:.5s}#rs_lgw_list a{opacity:1;transition-duration:.5s}#rs_lgw_list.child-hover a:not(:hover){opacity:.3;transition-duration:.5s}#rs_lgw_list a:hover .animation-padding{width:32px;transition-duration:.5s}#rs_lgw_list a .b_suggestionText{width:122px;padding-left:12px;padding-right:12px}.rtl #rs_lgw_list a{border-radius:100px 0 0 100px}#rs_lgw_list a .b_suggestionText{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow-wrap:break-word}#relatedSearchesLGWContainer h2{font-size:14px;width:120px;margin:0 0 0 1rem;line-height:1rem;overflow:hidden;text-overflow:ellipsis}.rtl #relatedSearchesLGWContainer h2{margin:0 1rem 0 0}#relatedSearchesLGWContainer h2 strong{font-weight:bold}#relatedSearchesLGWContainer.lgw-slide-in{transform:none;opacity:1;transition-duration:.5s}#relatedSearchesLGWContainer .rs_lgw_icon,#relatedSearchesLGWContainer .rs_lgw_icon svg,#relatedSearchesLGWContainer .more-rs-btn-icon,#relatedSearchesLGWContainer .more-rs-btn-icon svg{width:16px;height:16px}.b_ans .b_rs .b_suggestionIcon svg path,.b_ans .b_rrsr .sg_svg svg path{fill:#767676}#relatedSearchesLGWContainer .rs_lgw_icon.sug_sprite{width:40px;height:40px;margin:-12px;background:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png) no-repeat -762px -40px;transform:scale(.5)}#relatedSearchesLGWContainer .more-rs-btn-icon.sug_sprite{width:36px;height:20px;margin:-10px;background:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png) no-repeat -348px 0;transform:scale(.4)}#rscarousel strong{font-weight:normal}#b_results #inline_rs .b_vlist2col ul:first-child{margin-right:160px;padding-bottom:8px}#b_results #inline_rs .b_vlist2col li{padding-bottom:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}#b_results #inline_rs .b_vlist2col{padding-left:0}#rscar_close{float:right}#rscar_close::after{height:16px;width:16px;content:\" \";display:inline-block;background-repeat:no-repeat}#rscar_close:hover::after{cursor:pointer}.rslist_title{display:inline-block;color:#444}.rslist_head{padding:12px 0}#inline_rs .b_sideBleed{border-top:1px solid #ececec;padding:0;margin:0}#rscar_close::after{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAR0lEQVR4AWOYOHGiABA7gGgG7ABVDZTxH4gvgARwKL4AVeOAEMDUhFUOpwROxbhMw6UYpyZ0xWRpIMtJJHuapGAlK+JIThoADD3VTZEy3aEAAAAASUVORK5CYII=)}#rscar_close:hover::after{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAR0lEQVQokWNwcXERAGIHEM2AA6CogTL+A/EFbJqgii9A1TigC6BowimHTQKfQbg04VaMQxN+xSRrIMlJJHma5GAlN+KIThoAX1F+rQaZhuoAAAAASUVORK5CYII=)}.sb_pagP_bp:after{transform-origin:-430px 0}.sb_pagP_bp:hover:after,.sb_pagP_bp:active:after,.sb_pagP_bp:focus:after{transform-origin:-514px 0}.sb_pagN_bp:after{transform-origin:-430px 0}.sb_pagN_bp:hover:after,.sb_pagN_bp:active:after,.sb_pagN_bp:focus:after{transform-origin:-514px 0}.sb_inactP:after,.sb_inactP:hover:after{transform-origin:-598px 0}.b_pag a{display:block;text-align:center}.b_pag a.sb_bp{min-width:40px;margin-right:20px;line-height:42px}.b_pag a.sb_pagN,.b_pag a.sb_pagP{border:0;padding:1px}.b_pag a.sb_pagN_bp,.b_pag a.sb_pagP_bp{width:40px;height:40px;margin-top:0}.b_pag a.sb_bp.sb_inactP{min-width:38px}.b_pag a.sb_pagP_bp.sb_inactP{width:38px}.b_pag a.b_roths{transform:rotate(180deg)}.b_pag .sw_prev,.b_pag .sw_next{margin:2px}@media screen and (-ms-high-contrast:active){.sb_pagN:after,.sb_pagP:after{content:\"\"}li.b_pag a.sb_pagN,li.b_pag a.sb_pagP{width:auto}li.b_pag a.b_roths{transform:rotate(0deg)}.b_pag .sw_next,.b_pag .sw_prev{display:block}}z{a:1}.b_pag_lets_chat{display:flex;align-items:center;gap:6px;color:#fff;border-radius:20px;border:none;margin:5px 0;padding:6px 16px 6px 12px;cursor:pointer;background:linear-gradient(129.58deg,#2870ea 20.89%,#1b4aef 77.37%)}.b_pg_chat_btn_svg{height:21px;width:21px;background:url(/rp/WkXfZA9iZ7ItUaPfM--zd16N3Fo.svg) no-repeat}#mfa_root .fba_sbicn{background:url(/rp/yzhK9LMK0pK8FBXJDlWpAoFuOfI.png) no-repeat -875px 3px;width:38px !important;transform:scale(.7)}#b_results>li#mfa_root{right:0;position:fixed;z-index:1011;background-color:transparent;pointer-events:none}#mfa_root .b_ds5{transform:none;transition:transform .4s cubic-bezier(.3,.55,.1,1),opacity .1s;opacity:1;z-index:1011;align-self:flex-end;pointer-events:initial;border-radius:50%;overflow:hidden}#mfa_root.b_fabHide .b_ds5{pointer-events:none;transform:translateX(30px);opacity:0}#mfa_root .b_ds5:active{opacity:.8}#mfa_root .mfa_btn{display:flex;align-items:center;justify-content:center;cursor:pointer}#mfa_root:not(.b_fabexp):focus-within .b_ds5{border:1px solid #919191}#b_results>li#mfa_root { padding: 40px; bottom: 0px; ; } #mfa_root .mfa_btn { background: #fff; width: 56px; height: 56px; } #b_results>li#mfa_root:not(.b_fabexp):focus-within { padding: 39px; }.b_ds5{box-shadow:0 0 0 1px rgba(0,0,0,.08),0 4px 12px 1px rgba(0,0,0,.2);-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.08),0 4px 12px 1px rgba(0,0,0,.2)}a.b_ds5:hover,input.b_ds5:hover{box-shadow:0 0 0 1px rgba(0,0,0,.08),0 4px 14px 2px rgba(0,0,0,.24);-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.08),0 4px 14px 2px rgba(0,0,0,.24)}#b_context.crhide,#b_mtp.crhide{display:none}#b_context.crinvis,#b_mtp.crinvis{visibility:hidden}#b_mtp{display:inline-block;visibility:hidden}#b_mtp:not(.crhide),#b_mtp *{display:inline-block;overflow:hidden;visibility:visible;color:#71777d}#b_context.crshow,.mtpsvg.crshow{opacity:1}#b_context,.mtpsvg{opacity:0;transition:opacity .3s}#b_mtp{width:336px;margin-left:10px;vertical-align:top}.mtprt{height:48px;background:#fff;box-shadow:0 4px 6px 1px rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.05);margin:10px 0 8px 0;border-radius:24px 0 0 24px;cursor:pointer;float:right}.mtpseem{margin:0 20px 0 4px;line-height:48px;font-size:13px;float:right}.mtprt img{width:40px;height:40px;margin:4px}.mtprt img{border-radius:20px}#b_mtp .mtpchv{margin:0 0 12px -28px;transform:rotate(90deg)}#b_mtp:not(.crhide) .mtprt{transform:translateX(100%);animation:mtp-in .3s cubic-bezier(0,0,.58,1) forwards}#b_mtp.mtpslidert .mtprt{transform:translateX(0%);animation:mtp-out .3s cubic-bezier(0,0,.58,1) forwards}@keyframes mtp-in{100%{transform:translateX(0%)}}@keyframes mtp-out{100%{transform:translateX(100%)}}body #b_opalpers .b_op_flyout{top:215px}.b_sydConvMode #b_context{display:none}.b_sydConvMode #b_mtp:not(.crhide){display:none}#b_content #b_context > .b_ans{background-color:transparent;}#b_content #b_pole .ent-dtab-content, #b_content #b_pole .ent-dtab-content > div:first-child{background-color:#ffffff;}#b_content #b_results.b_kcwptheme > li .b_deep h3 a{color:#1358A9;}#b_content #b_results.b_kcwptheme > li h2 a{color:#1358A9;}#b_content #b_results.b_kcwpthemeb > li .b_deep h3 a:hover{color:#1358A9;}#b_content #b_results.b_kcwpthemeb > li h2 a:hover{color:#1358A9;}#b_context .kcm-dtab-name-icon path{fill:#1358A9 !important;}#b_context .l_ecrd_vqfcts .b_module_expansion .b_expansion_wrapper{border:0;height:auto;margin-top:16px;}#b_context .l_ecrd_vqfcts .b_onpage_expansion .b_expansion_chevron{top:2px;}#b_context .l_ecrd_vqfcts .b_onpage_expansion .b_expansion_chevron svg{height:12px;}#b_context .l_ecrd_vqfcts .b_onpage_expansion .b_expansion_text{color:#444;font-size:13px;font-weight:700;line-height:18px;}#b_context .l_ecrd_vqfcts.whitespace .b_module_expansion .b_expansion_wrapper{margin-top:4px;}#b_results .lite-entcard-blk .l_ecrd_simgset{padding:16px 1px;}#b_results>li .l_ecrd_simgset a.l_ecrd_rq_btxt{color:#111;}#bpage.b_drk .l_ecrd_vqfcts .l_ecrd_vqfcts_stock_up{color:#60BD84;fill:#60BD84;}#bpage:not(.b_drk) .lite-entcard_a093e div.l_ecrd_vqfcts_row .lc_expfact a, #bpage:not(.b_drk) .lite-entcard_a093e div.l_ecrd_vqfcts_row .lc_expfact a:visited, .lite-entcard_a093e div.l_ecrd_vqfcts_row .lc_expfact a, .lite-entcard_a093e div.l_ecrd_vqfcts_row .lc_expfact a:visited, .lite-entcard_a093e .l_ecrd_vqfcts_lnk{color:#1358A9;}#bpage:not(.b_drk) .lite-entcard_a093e div.l_ecrd_vqfcts_row a.lc_expfact_title, #bpage:not(.b_drk) .lite-entcard_a093e div.l_ecrd_vqfcts_row a.lc_expfact_title:visited, .lite-entcard_a093e div.l_ecrd_vqfcts_row a.lc_expfact_title, .lite-entcard_a093e div.l_ecrd_vqfcts_row a.lc_expfact_title:visited{color:#444;}#shdlg #shdlg-main, #shdlg.wide div#shdlg-main{background-color:unset;border:0;}#shdlg-sharesarea{background-color:#fff;}*:not(.l_ecrd_hero_ttl) > div > a.l_ecrd_txt_lnk.l_ecrd_txt_hover:hover,*:not(.l_ecrd_hero_ttl) > div > a.l_ecrd_item_hover:hover{color:#111;}.b_dark .l_ecrd_a1_o.fact{border-top-color:#ddd;}.b_dark .l_ecrd_a1_o.fact:not(:only-child){border-top-color:#ddd;}.b_dark .l_ecrd_ftr_txt, .b_dark .lite-entcard-main .l_ecrd_ftr_txt a, .b_dark .lite-entcard-main .l_ecrd_ftr_txt a:visited {color:#767676;}.b_dark .l_ecrd_txt_gl{color:#111;}.b_dark .l_ecrd_vqfcts .l_ecrd_vqfcts_exch{color:#FFF;}.b_dark .l_ecrd_vqfcts .l_ecrd_vqfcts_stock_down{color:#FF6666;fill:#FF6666;}.b_dark .lite-entcard-blk:not(:last-child):not(.l_ecrd_bkg_bdrls), .b_dark .lite-entcard-main > div:not(:last-child) > .lite-entcard-blk:not(.l_ecrd_bkg_bdrls) {border-bottom-color:#ddd;}.b_dark .lite-entcard-main{background-color:#f7f7f7;box-shadow:0 0 0 1px #E1E1E1, 0 2px 3px 0 #E1E1E1;}.b_dark .lite-entcard-main, .b_dark .lite-entcard-main a, .b_dark .lite-entcard-main a:visited {color:#444;}.b_dark .lite-entcard_a093e  .l_ecrd_tabtbl .tfil-active, #bpage.b_drk .lite-entcard_a093e  .l_ecrd_tabtbl .tfil-active{background-color:#B4E6FF !important;border:1px solid #B4E6FF !important;color:#292827 !important;}.b_dark .lite-entcard_a093e .l_ecrd_hov_thm:hover{background-color:unset;}.b_kcwpthemebg{background-color:#F6F9FC !important;}.ent-dtab-btn.def-override.ent-dtab-tabuxv1{background-color:var(--AC_ThemeBack2, #F6F9FC);border-color:var(--AC_ThemeFore1, #1358A9);color:var(--AC_ThemeFore1, #1358A9);}.ent-dtab-btn.ent-dtab-btn-active.def-override.ent-dtab-tabuxv1{background-color:var(--AC_ThemeFore1, #1358A9);border-color:var(--AC_ThemeFore1, #1358A9);color:var(--AC_ThemeBack2, #F6F9FC);}.ent-dtab-ovr.ent-dtab-ovr-nl.def-override.ent-dtab-tabuxv1{background-color:#ffffff;border-color:#ffffff;color:#000000;}.kc-dtab-name{background-color:#F6F9FC;border:1px solid #1358A9;}.kcm-dtab-name{background-color:#F6F9FC;color:#1358A9;}.l_ecrd_a1{padding:16px 20px;}.l_ecrd_a1 .spl_trnsths{padding-top:12px;}.l_ecrd_a1 div.SITE{padding:0 8px 0 0;}.l_ecrd_a1_o{display:flex;justify-content:space-between;}.l_ecrd_a1_o.fact:not(:only-child){border-top:1px solid #DDD;margin-top:12px;padding-top:12px;}.l_ecrd_bkg_img{position:absolute;z-index:-1;}.l_ecrd_ftr{display:flex;padding:12px 20px;position:relative;}.l_ecrd_ftr_seemore{background:#FFF;border:1px solid;border-radius:18px;bottom:-16px;font-weight:700;left:0;line-height:18px;margin:auto;padding:4px 16px;position:absolute;right:0;width:fit-content;z-index:1;}.l_ecrd_ftr_txt a,.l_ecrd_ftr_txt a:visited{text-decoration:underline;}.l_ecrd_ftr_txt,.l_ecrd_ftr_txt a,.l_ecrd_ftr_txt a:visited,.fdbtext{color:#444;font-size:11px;line-height:15px;}.l_ecrd_hero{padding-top:1px;}.l_ecrd_hero .cico{border-radius:0;}.l_ecrd_hero .l_ecrd_rel .cico{overflow:visible;}.l_ecrd_hero .l_ecrd_rel .cico a{display:inline-block;}.l_ecrd_hero .l_ecrd_webicons{direction:ltr;margin-left:20px;margin-top:-14px;position:relative;}.l_ecrd_hero .l_ecrd_webicons > div{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_hero .l_ecrd_webicons > div:hover{box-shadow:0 1px 4px 1px rgb(0 0 0 / 40%);transform:scale(1.10,1.10);transition:all ease-in-out .2s;}.l_ecrd_hero .l_ecrd_webicons_with_title_hover{direction:ltr;margin-left:20px;margin-top:-14px;position:relative;z-index:2;}.l_ecrd_hero .l_ecrd_webicons_with_title_hover .l_ecrd_webicon_with_title_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_hero .spl_share{bottom:40px;color:#fff;position:absolute;right:8px;z-index:1;}.l_ecrd_hero .spl_share a, #b_content .spl_share a{background:rgba(0, 0, 0, .7);border-radius:14px;color:#fff;}.l_ecrd_hero .spl_share svg{fill:#fff;margin:8px;stroke:#fff;width:12px;}.l_ecrd_hero.cliphero{padding-top:0;}.l_ecrd_hero.cliphero .l_ecrd_rel{border-top-left-radius:6px;border-top-right-radius:6px;overflow:hidden;}.l_ecrd_hero.kcHeroClip{clip-path:url(#kcHeroClip);;}.l_ecrd_hero_smi{background:rgba(0, 0, 0, .7);border-radius:14px;color:#fff;height:12px;padding:8px;position:absolute;right:8px;}.l_ecrd_hero_smi > div{float:right;font-size:13px;line-height:28px;margin-left:8px;margin-top:-8px;}.l_ecrd_hero_smi > svg{float:left;}.l_ecrd_hero_ttl,.l_ecrd_hero_subttl,.l_ecrd_hero_desc,.l_ecrd_txt_bld{font-weight:bold;}.l_ecrd_hero_txt{left:20px;position:absolute;z-index:1;}.l_ecrd_hero_txt > div:not(:last-of-type){margin-bottom:8px;}.l_ecrd_hero_txt,#b_content .l_ecrd_hero_txt p,.lite-entcard-main .l_ecrd_hero_txt div,.lite-entcard-main .l_ecrd_hero_txt a,.lite-entcard-main .l_ecrd_hero_txt a:visited,.lite-entcard-head .l_ecrd_hero_txt div,.lite-entcard-head .l_ecrd_hero_txt a,.lite-entcard-head .l_ecrd_hero_txt a:visited,#bpage.b_drk .lite-entcard-head .l_ecrd_hero_txt a,#bpage.b_drk .lite-entcard-head .l_ecrd_hero_txt a:visited{color:#fff;}.l_ecrd_hero_txt.l_ecrd_hero_txt_bottom{bottom:10%;}.l_ecrd_hero_txt.l_ecrd_hero_txt_bottom_claim{bottom:0px;}.l_ecrd_hero_txtmsk{text-shadow:0 0 40px rgb(0 0 0), 0 0 20px rgb(0 0 0 / 50%), 0 0 10px rgb(0 0 0 / 20%);}.l_ecrd_imcolheader .l_ecrd_webicon_with_title_txtside{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_imcolheader .l_ecrd_webicons_with_title_hover{margin-left:-12px;padding-bottom:16px;}.l_ecrd_imcolheader .l_ecrd_webicons_with_title_hover .l_ecrd_webicon_with_title_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_imcolheader.gradient .l_ecrd_claimed_thumb svg path, .l_ecrd_hero .l_ecrd_claimed_thumb svg path{fill:#FFF;}.l_ecrd_imcolheader.gradient .l_ecrd_claimed_tip:hover:before, .l_ecrd_imcolheader.gradient .l_ecrd_claimed_tip:hover:after,.l_ecrd_hero .l_ecrd_claimed_tip:hover:before,.l_ecrd_hero .l_ecrd_claimed_tip:hover:after{background-color:#FFF;color:#444;}.l_ecrd_imcolheader.gradient .l_ecrd_webicon_with_title_txtside{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);margin-top:-12px;}.l_ecrd_imcolheader.gradient .l_ecrd_webicon_with_title_txtside:hover{box-shadow:0 1px 4px 1px rgb(0 0 0 / 40%);transform:scale(1.10,1.10);transition:all ease-in-out .2s;}.l_ecrd_imcolheader.gradient .l_ecrd_webicons_with_title_hover .l_ecrd_webicon_with_title_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);margin-top:-12px;}.l_ecrd_imgpair_l .l_ecrd_tud{float:right;}.l_ecrd_mttl{display:flex;margin-bottom:16px;}.l_ecrd_mttl > div{flex:1 1 auto;}.l_ecrd_mttl > div:last-of-type{flex:0 0 auto;}.l_ecrd_mttl svg{margin-top:-1px;vertical-align:middle;}.l_ecrd_nt{min-height:14px;}.l_ecrd_nt .l_ecrd_nt_imgcolstrip{margin-left:20px;padding-top:16px;}.l_ecrd_nt .l_ecrd_webicons{direction:ltr;margin-left:20px;margin-top:-14px;position:absolute;z-index:2;}.l_ecrd_nt .l_ecrd_webicons + div{padding-top:26px;}.l_ecrd_nt .l_ecrd_webicons > div{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_nt .l_ecrd_webicons > div:hover{box-shadow:0 1px 4px 1px rgb(0 0 0 / 40%);transform:scale(1.10,1.10);transition:all ease-in-out .2s;}.l_ecrd_nt .l_ecrd_webicons_with_title_hover{direction:ltr;margin-left:20px;margin-top:-14px;position:relative;z-index:2;}.l_ecrd_nt .l_ecrd_webicons_with_title_hover .l_ecrd_webicon_with_title_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 25%);}.l_ecrd_nt .spl_share{color:#fff;margin-top:-14px;position:absolute;right:20px;}.l_ecrd_nt .spl_share a{background:rgba(0, 0, 0, .7);border-radius:14px;color:#fff;}.l_ecrd_nt .spl_share svg{fill:#fff;margin:8px;stroke:#fff;width:12px;}.l_ecrd_nt_imgcolstrip .b_slideexp {pointer-events:auto;}.l_ecrd_nt_imgcolstrip .b_slideexp .carousel_seemore .seeAll_txt{color:#FFFFFF;}.l_ecrd_nt_imgcolstrip .slide:hover, .l_ecrd_nt_imgcolstrip .slide:focus{transform:scale(1.06);transition:all ease-in-out .2s;}.l_ecrd_poleheader .kc-dtab-name{background-color:#FFF;border:1px solid #1358A9;}.l_ecrd_poleheader .kc-dtab-name-active{background-color:#FFF;border:1px solid #166CCF;}.l_ecrd_poleheader .kc-dtab-name-active .l_ecrd_thmtxt{color:#FFF;}.l_ecrd_poleheader.lightbg .l_ecrd_rel{background-color:#F6F9FC;}.l_ecrd_rel{position:relative;}.l_ecrd_rq_btxt{font-size:13px;font-weight:bold;line-height:18px;}.l_ecrd_simgset{padding:16px 20px;}.l_ecrd_simgset .l_ecrd_imgsetgrid_ttl{margin-bottom:16px;}.l_ecrd_simgset .l_ecrd_simgset_item_data{margin-top:8px;}.l_ecrd_simgset .l_ecrd_simgset_item_data > div{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;}.l_ecrd_simgset li{display:inline-block;margin-right:8px;overflow:hidden;vertical-align:top;}.l_ecrd_simgset li .cico{border-radius:6px;}.l_ecrd_simgset li:last-of-type{margin-right:0px;}.l_ecrd_simgset ul{direction:ltr;}.l_ecrd_simgset.l_ecrd_simgset_circle .l_ecrd_simgset_item_data{text-align:center;}.l_ecrd_simgset.l_ecrd_simgset_circle li .cico{border-radius:50%;}.l_ecrd_tmln_itm:hover .l_ecrd_brdr_thm.l_ecrd_tmln_bullet{background:#1358A9;}.l_ecrd_tud{float:left;padding-top:8px;}.l_ecrd_tud a,.l_ecrd_tud a:link{color:#001BA0;}.l_ecrd_txt_gl{color:#111;font-size:18px;line-height:20px;}.l_ecrd_txt_herol, .l_ecrd_txt_large{font-size:60px;line-height:60px;}.l_ecrd_txt_lnk.l_ecrd_txt_hover.l_ecrd_hov_hitbox, .l_ecrd_hov_hitbox p{display:inline;}.l_ecrd_txt_ttl,.l_ecrd_txt_bld,.l_ecrd_txt_qfttl,.l_ecrd_txt_modttl,.l_ecrd_txt_heroxl,.l_ecrd_txt_herol,.l_ecrd_txt_herom,.l_ecrd_txt_heros,.l_ecrd_txt_heroxs,.l_ecrd_txt_heroxxs,.l_ecrd_qfcts_prim,.l_ecrd_bqfcts_txt.lite-entcard-exp-tit h2{font-weight:bold;}.l_ecrd_vqfcts{padding:16px 20px;}.l_ecrd_vqfcts .b_collapse{display:none;}.l_ecrd_vqfcts .b_module_expansion{margin:0 0;}.l_ecrd_vqfcts .b_module_expansion_control{padding:0;}.l_ecrd_vqfcts .l_ecrd_vqfcts_exch{color:#767676;}.l_ecrd_vqfcts .l_ecrd_vqfcts_stock_down{color:#C80000;fill:#C80000;}.l_ecrd_vqfcts .l_ecrd_vqfcts_stock_up{color:#3B840C;fill:#3B840C;}.l_ecrd_vqfcts .lc_expfact .lc_expfact_title{font-size:13px;}.l_ecrd_vqfcts.whitespace .l_ecrd_vqfcts_row:after{border-bottom:1px solid transparent;content:\" \";display:block;width:100%;}.l_ecrd_vqfcts.whitespace.line .l_ecrd_vqfcts_row.l_ecrd_vqfcts_row_nodivider:nth-last-child(1):after{border-bottom:1px solid transparent;}.l_ecrd_vqfcts.whitespace.line .l_ecrd_vqfcts_row:after{border-bottom:1px solid #ececec;margin-bottom:8px;margin-top:8px;}.l_ecrd_vqfcts.whitespace.thin .l_ecrd_vqfcts_row:after{display:none;}.l_ecrd_vqfcts.whitespace.thin .l_ecrd_vqfcts_row_space{margin-top:4px;}.l_ecrd_vqfcts_row_space{margin-top:8px;}.l_ecrd_vqfcts_ttl{display:inline-block;font-size:13px;font-weight:700;line-height:15px;margin-right:12px;}.l_ecrd_webicon_module_item{border-radius:9999px;flex-shrink:0;height:28px;overflow:hidden;width:28px;}.l_ecrd_webicon_module_wrapper:hover .l_ecrd_webicon_module_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 40%);transform:scale(1.10,1.10);transition:all ease-in-out .2s;}.l_ecrd_webicon_module_wrapper:hover .l_ecrd_webicon_module_item_title{text-decoration:underline;}.l_ecrd_webicon_txt{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden;padding-right:12px;text-overflow:ellipsis;}.l_ecrd_webicon_txtside{align-items:center;display:flex;overflow:hidden;}.l_ecrd_webicon_txtside .sp-webicons32 #salookinsidebooksvg{padding:8px;}.l_ecrd_webicons{direction:ltr;display:flex;}.l_ecrd_webicons > div{border-radius:9999px;flex-shrink:0;margin-right:12px;overflow:hidden;}.l_ecrd_webicons > div:focus-within{outline:auto;}.l_ecrd_webicons > div:last-of-type{margin-right:0;}.l_ecrd_webicons a:hover{text-decoration:none;}.l_ecrd_webicons_with_title, .l_ecrd_webicons_with_title_Single{border-top:1px solid #ddd;display:flex;padding-bottom:16px;padding-left:20px;padding-top:16px;}.l_ecrd_webicons_with_title_SingleWrapper{display:inline-flex;}.l_ecrd_webicons_with_title_SingleWrapper > a{padding-left:8px;padding-right:8px;}.l_ecrd_webicons_with_title_SingleWrapper:hover .l_ecrd_webicon_module_item{box-shadow:0 1px 4px 1px rgb(0 0 0 / 40%);transform:scale(1.10,1.10);transition:all ease-in-out .2s;}.l_ecrd_webicons_with_title_SingleWrapper:hover .l_ecrd_webicon_txtside{text-decoration:underline;}.lite-entcard-ans > div:last-child .l_ecrd_ftr{margin-bottom:28px;}.lite-entcard-blk{clear:both;position:relative;}.lite-entcard-blk > div:not(.l_ecrd_bkg_img){position:relative;}.lite-entcard-blk:not(:first-child){width:100%;}.lite-entcard-blk:not(:last-child):not(.l_ecrd_bkg_bdrls),.lite-entcard-main > div:not(:last-child) > .lite-entcard-blk:not(.l_ecrd_bkg_bdrls){border-bottom:1px solid #DDD;}.lite-entcard-main{border-radius:6px;box-shadow:0 0 0 1px rgba(0,0,0,.05), 0 2px 3px 0 rgba(0,0,0,.1);color:#444;font-size:13px;line-height:20px;margin-bottom:4px;width:100%;}.lite-entcard-main a,.lite-entcard-main a:visited{color:#444;}.lite-entcard-main a:focus-visible .bsimg{outline-offset:-2px;outline-style:auto;}.lite-entcard-main p{-webkit-line-clamp:initial;}.lite-entcard-maintop .l_ecrd_ftr{margin:0 20px 0 -20px;padding:12px 20px 4px 20px;}.lite-entcard-maintop .l_ecrd_ftr_txt a{text-decoration:none;}.lite-entcard-maintop.l_ecrd_ans_expand .lite-entcard-blk{border-top:1px solid #DDD;}.lite-entcard_a093e  .l_ecrd_chart_bar_thm{background:linear-gradient(to bottom, #009BDE 0%, #1358A9 100%);}.lite-entcard_a093e  .l_ecrd_tabtbl .tfil-active{background-color:#1358A9 !important;border:1px solid #1358A9 !important;}.lite-entcard_a093e .l_ecrd_bkg_hlt{background-color:#F6F9FC;}.lite-entcard_a093e .l_ecrd_bkg_txthlt{background-color:#1358A9;}.lite-entcard_a093e .l_ecrd_brdr_thm{border-color:#1358A9;}.lite-entcard_a093e .l_ecrd_chart_hbar_thm{background:linear-gradient(to left, #009BDE 0%, #1358A9 100%);}.lite-entcard_a093e .l_ecrd_hov .l_ecrd_hov_qna .l_ecrd_hov_qna_site_txt, .lite-entcard_a093e .l_ecrd_txt_hlt, .lite-entcard_a093e .sp-tpwebicons.sp-symbolicon.SRCH {color:#1358A9;}.lite-entcard_a093e .l_ecrd_hov_thm:hover{background-color:#F6F9FC;}.lite-entcard_a093e .l_ecrd_hov_thmtxt:hover{color:#1358A9;}.lite-entcard_a093e .l_ecrd_thm_fill{fill:#F6F9FC;}.lite-entcard_a093e .l_ecrd_thmtxt, .lite-entcard_a093e a.l_ecrd_thmtxt, .lite-entcard_a093e a.l_ecrd_thmtxt:visited{color:#1358A9;}.lite-entcard_a093e .l_ecrd_tthm_fill{fill:#1358A9;}.lite-entcard_a093e .sp-ofsite, .lite-entcard_a093e .l_ecrd_product .spl_stf, .lite-entcard_a093e .spl_trnsths, .lite-entcard_a093e .lc_expfact_plus, .lite-entcard_a093e .b_slidesContainer .seeAll_chev circle, .lite-entcard_a093e .sp-symbolicon .gray50_fill{fill:#1358A9;}.lite-entcard_a093e .spl_trnsths a, .lite-entcard_a093e .spl_trnsths a:visited{color:#1358A9;}.lite_acf.lite-entcard_a093e .l_ecrd_hov_thm:hover{background-color:#F6F9FC;}.spl-car-tmln-container:hover .spl-car-tmln-dot{background:#1358A9;}a.ent-dtab-btn.ent-dtab-btn-hipo.def-override.ent-dtab-tabuxv1{background-color:var(--AC_ThemeBack2, #F6F9FC);border-color:var(--AC_ThemeFore1, #1358A9);color:var(--AC_ThemeFore1, #1358A9);fill:var(--AC_ThemeFore1, #1358A9);}a.l_ecrd_txt_lnk{text-decoration:none;}a.l_ecrd_txt_lnk:hover *:not(.l_ecrd_txt_nound):not(p){text-decoration:underline;}a:focus > .l_ecrd_hero_smi{border:1px solid #fff;}a:hover .l_ecrd_hero_smi > div{text-decoration:underline;}div.l_ecrd_imcolheader div.cico{z-index:1;}html[dir='ltr'] .l_ecrd_webicon_module_wrapper, .l_ecrd_webicons_with_title_Single{padding-right:12px;}html[dir='ltr'] .l_ecrd_webicons_with_title > div:last-of-type{padding-right:0;}html[dir='rtl'] .l_ecrd_mttl svg{transform:scaleX(-1);}html[dir='rtl'] .l_ecrd_simgset ul li{direction:rtl;}html[dir='rtl'] .l_ecrd_tud{float:right;}html[dir='rtl'] .l_ecrd_webicon_module_wrapper{padding-left:12px;}html[dir='rtl'] .l_ecrd_webicons_with_title, .l_ecrd_webicons_with_title_Single{padding-right:20px;}.l_ecrd_webicon_module_item_title{display:block;font:11px/15px 'Roboto',Helvetica,Sans-Serif;padding-top:4px;text-align:center;}@media (prefers-color-scheme: dark){#bpage.b_med .l_ecrd_vqfcts .l_ecrd_vqfcts_exch{color:#FFF;}#bpage.b_med .l_ecrd_vqfcts .l_ecrd_vqfcts_stock_down{color:#FF6666;fill:#FF6666;}#bpage.b_med .l_ecrd_vqfcts .l_ecrd_vqfcts_stock_up{color:#60BD84;fill:#60BD84;}}@media only screen and (max-width:1268.9px){.l_ecrd_hero .l_ecrd_webicons{margin-top:-10px;}.l_ecrd_hero .l_ecrd_webicons_with_title_hover{margin-left:9px;margin-top:-12px;}.l_ecrd_hero .spl_share span{display:none;}.l_ecrd_hero_smi_txt{display:none;}.l_ecrd_hero_txt > div:not(:last-of-type){margin-bottom:0;}.l_ecrd_nt .l_ecrd_webicons{margin-top:-10px;}.l_ecrd_nt .l_ecrd_webicons_with_title_hover{margin-left:9px;margin-top:-12px;}.l_ecrd_nt .spl_share span{display:none;}.l_ecrd_webicons > div{margin-right:8px;}.lite-entcard-main .l_ecrd_txt_herol{font-size:40px;line-height:40px;}.lite-entcard-main .l_ecrd_txt_herom{font-size:30px;line-height:30px;}.lite-entcard-main .l_ecrd_txt_heros{font-size:28px;line-height:28px;}.lite-entcard-main .l_ecrd_txt_heroxl{font-size:50px;line-height:50px;}.lite-entcard-main .l_ecrd_txt_heroxs{font-size:24px;line-height:24px;}.lite-entcard-main .l_ecrd_txt_heroxxs{font-size:20px;line-height:16px;}#b_context .l_ecrd_simgset li:nth-of-type(3){margin-right:0px;}#b_context .l_ecrd_simgset li:nth-of-type(4){display:none;}}@media only screen and (max-width:1274.9px){.l_ecrd_webicon_module_wrapper:nth-of-type(n+5){display:none;}}@media only screen and (max-width:1356.9px){.l_ecrd_txt_herol{font-size:50px;line-height:50px;}#b_context .l_ecrd_simgset li:nth-of-type(4){margin-right:0px;}#b_context .l_ecrd_simgset li:nth-of-type(5){display:none;}}@media only screen and (max-width:1356.9px) and (min-width:1269px){.l_ecrd_hero .l_ecrd_webicons{margin-top:-12px;}.l_ecrd_hero_txt > div:not(:last-of-type){margin-bottom:4px;}.l_ecrd_nt .l_ecrd_webicons{margin-top:-12px;}}@media only screen and (max-width:1363.9px) and (min-width:1275px){.l_ecrd_webicon_module_wrapper:nth-of-type(n+6){display:none;}}@media screen and (-ms-high-contrast:active){.l_ecrd_hero_smi svg path{fill:currentcolor;}}.entityPreview{position:fixed;width:300px;border:1px solid #ddd;background:#fff;border-radius:8px;box-shadow:0 4px 12px 0 rgba(0,0,0,.1);z-index:6}a.entityPreview{text-decoration:none}a.entityPreview:active{background-color:#ececec}.epv_caption{width:196px;position:absolute}.epv_data .cico{margin-right:12px}.epv_data .cico,.epv_caption{display:inline-block}.epv_data img{border-radius:6px}a.entityPreview .epv_data{padding:16px;min-height:30px}.epv_content{height:100%}.epv_head{margin-bottom:12px}.epv_data .epv_desc{color:#444;line-height:18px}.epv_title{font-size:16px;line-height:20px;padding-bottom:4px;color:#111}.epv_Summary,.epv_subTitle{color:#666}#epvRup,#epvLup{top:-10px}#epvRdown,#epvLdown{bottom:-20px}#epvLup,#epvLdown{left:20px}#epvRup,#epvRdown{right:20px}#epvRup,#epvLup,#epvRdown,#epvLdown{position:absolute;width:20px;height:20px}#epvRup polyline,#epvRdown polyline,#epvLup polyline,#epvLdown polyline{fill:#fff;stroke:#ddd;stroke-width:1px}.epv_content .b_icRatings.b_icRat_2{justify-content:space-around}.epv_content .b_icRatings{margin-bottom:8px;color:#111;text-align:center;padding:0;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;justify-content:space-between}.epv_content .b_icRatings .b_imagePair>div:last-child{display:inline-block;font-weight:normal;vertical-align:top}.epv_content .b_icRatings .cico{margin-right:8px;padding-right:0;border-radius:0}.epv_content td:nth-child(2){color:#111;font-weight:bold}.epv_content td{padding:0;color:#666}.epv_content tr:not(:last-child) td{padding-bottom:4px}.epv_comp{margin-bottom:12px}.epv_relation{color:#444;padding-bottom:10px;border-bottom:1px solid #ececec;margin-bottom:10px;line-height:18px}.res55177943 {line-height:0;}@media only screen and (max-width:1274px){.res55177943,.res55177943 img{height:176px;width:296px;}}@media only screen and (min-width:1275px) and (max-width:1362px){.res55177943,.res55177943 img{height:228px;width:384px;}}@media only screen and (min-width:1363px){.res55177943,.res55177943 img{height:280px;width:472px;}}.sp-tpwebicons{width:28px;height:28px}.sp-symbolicon>svg,.sp-ofsite{display:block}.sp-tpwebicons.SITE{padding-right:8px}.sp-tpwebicons.SITE{width:16px;height:16px;padding:6px}.sp-tpwebicons.sp-symbolicon{width:16px;height:16px;padding:6px}@media only screen and (max-width:1362.9px){.sp-tpwebicons{width:24px;height:24px}.sp-tpwebicons.sp-symbolicon{width:14px;height:14px;padding:5px}}@media only screen and (max-width:1274.9px){.sp-tpwebicons{width:20px;height:20px}.sp-tpwebicons.sp-symbolicon{width:12px;height:12px;padding:4px}}.lite-entcard-ans-m .sp-tpwebicons{width:28px;height:28px}.lite-entcard-ans-m .sp-tpwebicons.sp-symbolicon{width:16px;height:16px;padding:6px}.sp-webicons20{width:20px;height:20px}.sp-webicons24{width:24px;height:24px}.sp-webicons28{width:28px;height:28px}.sp-webicons32{width:32px;height:32px}.sp-webicons40{width:40px;height:40px}.sp-ofsite{display:block}.sp-webicons20.SITE{padding-right:8px}.sp-webicons20.PHNE{padding-right:8px}.sp-webicons20.AUTO{padding-right:8px}.sp-webicons20.SRCH{padding-right:8px}.sp-webicons24.SITE{padding-right:8px}.sp-webicons24.PHNE{padding-right:8px}.sp-webicons24.AUTO{padding-right:8px}.sp-webicons24.SRCH{padding-right:8px}.sp-webicons28.SITE{padding-right:8px}.sp-webicons28.PHNE{padding-right:8px}.sp-webicons28.AUTO{padding-right:8px}.sp-webicons28.SRCH{padding-right:8px}.sp-webicons32.SITE{padding-right:8px}.sp-webicons32.PHNE{padding-right:8px}.sp-webicons32.AUTO{padding-right:8px}.sp-webicons32.SRCH{padding-right:8px}.sp-webicons40.SITE{padding-right:8px}.sp-webicons40.PHNE{padding-right:8px}.sp-webicons40.AUTO{padding-right:8px}.sp-webicons40.SRCH{padding-right:8px}.lc_expfact_plus{display:none;padding-left:4px;min-width:12px;min-height:12px;max-width:12px;max-height:12px;cursor:pointer}.lc_expfact_plus>svg{display:block}.lc_expfact{display:flex;align-items:center}.lc_expfact_default{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lc_expfact_title{margin-right:12px;font-weight:700;font-size:13px;line-height:15px;display:inline-block;white-space:nowrap}#b_dynRail{display:inline-block;vertical-align:top;padding-left:60px;max-width:472px;width:472px}#b_dynRail .b_dr_mod:not(:last-child){margin-bottom:10px}@media only screen and (max-width:1908px){#b_dynRail{width:382px}}@media only screen and (max-width:1818.9px){#b_dynRail{width:294px}}@media only screen and (max-width:1730.9px){#b_dynRail{display:none}}#b_dynRail .b_entity{margin-bottom:20px;padding:9px 19px 4px;width:100%;box-shadow:0 0 0 1px rgba(0,0,0,.05);border-radius:6px}#b_footerItems a#sb_california_privacy::before{height:14px;width:30px;content:\" \";display:inline-block;float:left;margin-right:4px;background-repeat:no-repeat;background-size:30px 14px}#b_footerItems a#sb_california_privacy{display:flex;align-items:center}#b_footerItems a#sb_california_privacy::before{background-image:url(/rp/T3t6V3azgG4BlSRcguR2ssuUOxQ.png)}z{a:1}:root { --KcWpPrimary: #F6F9FC; --KcWpSecondary: #1358A9; }#b_results h2 #kn_p,#b_results h3 #kn_p,#b_results h4 #kn_p{position:relative;display:inline}#b_pole #kn_p,.b_ans #kn_p{display:none}#kn_a{color:#4007a2;font:14px arial;left:-20px;position:absolute;top:25%}.b_title #kn_a,.b_overflow #kn_a{left:-3px;position:relative}</style><style type=\"text/css\">#tabcontrol_10_EF70D6 .tab-head { height: 40px; } #tabcontrol_10_EF70D6 .tab-menu { height: 40px; } #tabcontrol_10_EF70D6_menu { height: 40px; } #tabcontrol_10_EF70D6_menu>li { background-color: #ffffff; margin-right: 0px; height: 40px; line-height:40px; font-weight: 700; color: #767676; } #tabcontrol_10_EF70D6_menu>li:hover { color: #111; position:relative; } #tabcontrol_10_EF70D6_menu .tab-active { box-shadow: inset 0 -3px 0 0 #111; background-color: #ffffff; line-height: 40px; color: #111; } #tabcontrol_10_EF70D6_menu .tab-active:hover { color: #111; } #tabcontrol_10_EF70D6_navr, #tabcontrol_10_EF70D6_navl { height: 40px; width: 32px; background-color: #ffffff; } #tabcontrol_10_EF70D6_navr .sv_ch, #tabcontrol_10_EF70D6_navl .sv_ch { fill: #444; } #tabcontrol_10_EF70D6_navr:hover .sv_ch, #tabcontrol_10_EF70D6_navl:hover .sv_ch { fill: #111; } #tabcontrol_10_EF70D6_navr.tab-disable .sv_ch, #tabcontrol_10_EF70D6_navl.tab-disable .sv_ch { fill: #444; opacity:.2; }#tabcontrol_15_EFC771 .tab-head { height: 40px; } #tabcontrol_15_EFC771 .tab-menu { height: 40px; } #tabcontrol_15_EFC771_menu { height: 40px; } #tabcontrol_15_EFC771_menu>li { background-color: #ffffff; margin-right: 0px; height: 40px; line-height:40px; font-weight: 700; color: #767676; } #tabcontrol_15_EFC771_menu>li:hover { color: #111; position:relative; } #tabcontrol_15_EFC771_menu .tab-active { box-shadow: inset 0 -3px 0 0 #111; background-color: #ffffff; line-height: 40px; color: #111; } #tabcontrol_15_EFC771_menu .tab-active:hover { color: #111; } #tabcontrol_15_EFC771_navr, #tabcontrol_15_EFC771_navl { height: 40px; width: 32px; background-color: #ffffff; } #tabcontrol_15_EFC771_navr .sv_ch, #tabcontrol_15_EFC771_navl .sv_ch { fill: #444; } #tabcontrol_15_EFC771_navr:hover .sv_ch, #tabcontrol_15_EFC771_navl:hover .sv_ch { fill: #111; } #tabcontrol_15_EFC771_navr.tab-disable .sv_ch, #tabcontrol_15_EFC771_navl.tab-disable .sv_ch { fill: #444; opacity:.2; }#slideexp0_F4EC09 .slide { width: 280px; margin-right: 8px; }#slideexp0_F4EC09c .b_slidebar .slide { border-radius: 6px; }#slideexp0_F4EC09 .slide:last-child { margin-right: 1px; }#slideexp0_F4EC09c { margin: -4px; } #slideexp0_F4EC09c .b_viewport { padding: 4px 1px 4px 1px; margin: 0 3px; } #slideexp0_F4EC09c .b_slidebar .slide { box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); } #slideexp0_F4EC09c .b_slidebar .slide.see_more { box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.00); -webkit-box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.00); } #slideexp0_F4EC09c .b_slidebar .slide.see_more .carousel_seemore { border: 0px; }#slideexp0_F4EC09c .b_slidebar .slide.see_more:hover { box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.00); -webkit-box-shadow: 0 0 0 0px rgba(0, 0, 0, 0.00); }.lite-entcard-main{box-shadow:0 0 0 1px rgba(0,0,0,.05)}</style><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\nif (typeof DynScopesDropdownRE !== 'undefined') { DynScopesDropdownRE.init(\"\", \"\", \"marketplace\", false, \"\", false, false); } else if (typeof DynScopesDropdown !== 'undefined') { DynScopesDropdown.init(\"\", \"\", \"marketplace\", false, false); };var Shared;(function(n){function t(n){for(var i=[],t=1;t<arguments.length;t++)i[t-1]=arguments[t];return n.replace(/\\{([0-9]+)\\}/g,function(n,t){var r=parseInt(t);return r>=0&&r<i.length?i[r]:\"\"})}n.formatString=t})(Shared||(Shared={}));function ge_cl(n,t){var u,f,r,i;if(n){if(n.getElementsByClassName)return n.getElementsByClassName(t);for(u=n.getElementsByTagName(\"*\"),f=[],r=0;r<u.length;r++)i=u[r],i&&i.className&&i.className.indexOf(t)!==-1&&f.push(i);return f}return[]};_w[\"IDBbOv\"] = true; _w[\"IDPTit\"] =null;;var SmartEvent;(function(n){function o(n,i,r,u){u===void 0&&(u=!0);sj_be(n,i,r);t.push({el:n,evt:i,h:r,baj:u})}function s(n,i,r,u,f){r===void 0&&(r=!0);sj_evt.bind(n,i,u,f);t.push({evt:n,h:i,baj:r})}function u(){e(!1)}function f(){e(!0);sj_ue(_w,i,f);sj_evt.unbind(r,u)}function e(n){for(var i,u,f=[],r=0;r<t.length;++r)i=t[r],n||i.baj?(u=i.el,u?sj_ue(u,i.evt,i.h):sj_evt.unbind(i.evt,i.h)):f.push(i);t=f}var i=\"unload\",r=\"ajax.unload\",t=[];n.bind=o;n.bindc=s;sj_be(_w,i,f);sj_evt.bind(r,u)})(SmartEvent||(SmartEvent={}));var SharedAnimation;(function(n){function v(){var n,t;if(!(\"transition\"in _d.documentElement.style))for(n in o)t=\"-\"+n+\"-\",t+\"transition\"in _d.documentElement.style&&(u=o[n])}function y(){var i,n;if(!(\"transform\"in _d.documentElement.style))for(i in o)n=\"-\"+i+\"-transform\",n in _d.documentElement.style&&(t=n)}function p(){v();y()}function s(n){if(n.AnimationKey){var t=l[n.AnimationKey];t.endTime=Date.now();_w.Log2&&Log2.LogEvent(\"ClientInst\",{T:\"AnimationTiming\",startTime:t.startTime,endTime:t.endTime,AnimationName:t.animationName},null,null,null,null,null,null)}}function h(n,t){e+=1;n.AnimationKey=e;l[e]={startTime:Date.now(),endTime:-1,animationName:t}}function w(n){var f,r;n&&n.children&&n.children.length!=0&&(f=_w.innerHeight,n.style[t]=\"translateY(\"+f+\"px)\",i(n,\"b_slideListUp\"),Lib.CssClass.remove(n,\"b_slideListHide\"),n.style[t]=\"\",r=n.children[n.children.length-1],r&&(sj_be(r,u,function(i){var u,f;if(i.target===r&&i.propertyName===t)for(s(n),u=0;u<n.children.length;u++)f=n.children[u],f.style[t]=\"\"}),h(n,\"cascadeListOld\")))}function b(n,r){if(n&&n.children&&n.children.length!=0)n.style[t]=\"translateY(200px)\",i(n,\"b_slideListUp\"),Lib.CssClass.remove(n,\"b_slideListHide\"),n.style[t]=\"\",r&&i(n,\"b_slideListUp\")}function k(n){n&&f(n,\"b_slideTranslate\",!1,[t,t])}function d(n){n&&f(n,\"b_slide\",!0,[\"height\",\"height\"])}function g(n){n&&f(n,\"b_fade\",!1,[\"opacity\",\"opacity\"])}function nt(n){n&&f(n,\"b_fadeUp\",!1,[t,t])}function tt(n){if(n){for(var t=0;t<c.length;t++)Lib.CssClass.remove(n,c[t]);i(n,r);sj_evt.fire(\"transitionDone\",n);h(n,\"Hide\");s(n)}}function it(n){var t=n.offsetTop}function i(n,t){it(n);Lib.CssClass.toggle(n,t)}function rt(n){var t=n.clientHeight;t==0&&Lib.CssClass.contains(n,r)&&(Lib.CssClass.remove(n,r),t=n.clientHeight,Lib.CssClass.add(n,r));t>0&&(n.style.height=t+\"px\")}function a(n,t,i,r){if(n.target==t){var f=Lib.CssClass.contains(t,\"b_hide\")?i[1]:i[0];n.propertyName===f&&(s(t),Lib.CssClass.remove(t,r),n.propertyName===\"height\"&&t.style.removeProperty(\"height\"),sj_ue(t,u,a),sj_evt.fire(\"transitionDone\",t))}}function f(n,t,f,e){f&&rt(n);i(n,t);i(n,r);sj_be(n,u,function(i){a(i,n,e,t)});h(n,t)}var r=\"b_hide\",c=[\"b_slideListUp\",\"b_slide\",\"b_fade\",\"b_fadeUp\"],l={},e=0,u=\"transitionend\",t=\"transform\",o={o:\"oTransitionEnd\",moz:\"transitionend\",webkit:\"webkitTransitionEnd\"};n.cascadeListOld=w;n.cascadeList=b;n.toggleSlideTranslate=k;n.toggleSlide=d;n.toggleFade=g;n.toggleFadeUp=nt;n.toggleHide=tt;p()})(SharedAnimation||(SharedAnimation={}));_w.sched=_w.sched||function(){function r(t){n.push(t)}function u(n){return function(){_w.sched.schedule(n)}}function f(n){t.push(n)}function e(n,t){i[n]=t}var n=[],t=[],i={};return{register:r,wrapSchedule:u,schedule:f,reportCustomMetric:e,_ns:n,_reg:t,_cm:i}}();function sa_cl(n,t,i){if(n&&t){var r=n.className;i?r.indexOf(t)==-1&&(r=r.concat(\" \",t)):r=r.replace(t,\"\");n.className=r}};var EntityPreviewConfig = { featureList: \"\", testHooks: false };\n//]]></script><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\nvar SydneySuperAppPrivacyUtils;(function(n){function e(){var n;if((n=_w._sydMobNativeIntegration)!==null&&n!==void 0)return n.isSapphireAADUser}function o(n,r){if(n===\"data\"&&typeof r[n]==\"string\")try{r[n].startsWith(\"%7B\")&&(r[n]=decodeURIComponent(r[n]),r[t]=!0);r[n]=JSON.parse(r[n]);r[i]=!0}catch(u){r[n]=\"Log redaction failed: \"+u.message}}function s(n,r){n===\"data\"&&r[i]&&(r[n]=JSON.stringify(r[n]),delete r[i]);n===\"data\"&&r[t]&&(r[n]=encodeURIComponent(r[n]),delete r[t])}function r(n){if(typeof n!=\"object\"||n===null)throw new Error(\"redactFields should only be called on objects\");for(var t in n){if(t===\"payload\"&&typeof n[t]!=\"object\")throw new Error(\"The payload should always be an object\");f.includes(t)?(o(t,n),typeof n[t]==\"object\"&&n[t]!==null&&r(n[t]),s(t,n)):n[t]=u}}function h(n){if(!e())return n;try{var t=JSON.parse(n);return r(t),JSON.stringify(t)}catch(i){return\"Log redaction failed: \"+i.message}}var t=\"__Redact__ShouldEncodeURIComponent\",i=\"__Redact__ShouldJSONStringify\",u=\"<stripped/>\",f=[\"sysMsg\",\"IG\",\"version\",\"isAADUser\",\"isUserSignedIn\",\"isSydchatPathEnabledForAll\",\"chatType\",\"isBCBSwitchEnabled\",\"isStrictModeEnabled\",\"isBasicTraffic\",\"isDarkMode\",\"success\",\"ver\",\"appId\",\"mode\",\"entry\",\"app\",\"ctxVersion\",\"readout\",\"recogVersion\",\"visualVersion\",\"voiceConsent\",\"data\",\"payload\",\"deeplinkOrigin\",\"lastInputMethod\",\"contextualSydneyVersion\",\"perfCounter\",\"perfValue\",\"flights\",\"conversationId\",\"localStorageTone\",\"cookieTone\",\"newResponseTone\",\"timingEvents\",\"exception\",\"responseTone\",\"convId\",\"chatMode\",\"type\",\"scenario\",\"aadSigninStatus\"];n.redactTelemetryPayload=h})(SydneySuperAppPrivacyUtils||(SydneySuperAppPrivacyUtils={}));var SydneySuperAppLogger;(function(n){function c(n,u,f){t()&&console.log(\"\".concat(i,\" \").concat(n,\": \").concat(u,\" \").concat(f||\"\"));SuperAppBridge.logEvent({name:n,ext:{page:{actionType:u,objectName:f}},appId:r},undefined)}function f(n,u){var f=SydneySuperAppPrivacyUtils.redactTelemetryPayload(JSON.stringify(u));t()&&console.log(\"\".concat(i,\" \").concat(n,\": \").concat(f));SuperAppBridge.logEvent({name:\"DIAGNOSTIC_SYDNEY_AUTH\",ext:{diagnostic:{key:\"WebView info: \".concat(n),value:f}},appId:r},undefined)}function e(n,r){var u=SydneySuperAppPrivacyUtils.redactTelemetryPayload(JSON.stringify(r));y()||h?f(n,r):t()&&console.log(\"\".concat(i,\" \").concat(n,\": \").concat(JSON.stringify(u)))}function l(n,u){var f=SydneySuperAppPrivacyUtils.redactTelemetryPayload(JSON.stringify(u));t()&&console.log(\"\".concat(i,\" \").concat(n,\": \").concat(f));SuperAppBridge.logEvent({name:\"DIAGNOSTIC_SYDNEY_AUTH\",ext:{diagnostic:{key:\"WebView error: \".concat(n),value:f}},appId:r},undefined)}function a(n,u){var f=SydneySuperAppPrivacyUtils.redactTelemetryPayload(JSON.stringify(u));t()&&console.log(\"\".concat(i,\" \").concat(n,\": \").concat(f));SuperAppBridge.logEvent({name:\"DIAGNOSTIC_SYDNEY_AUTH\",ext:{diagnostic:{key:\"WebView warning: \".concat(n),value:f}},appId:r},undefined)}function o(n,i){var r=SydneySuperAppPrivacyUtils.redactTelemetryPayload(JSON.stringify(i));t()&&console.log(\"SLAPI \".concat(n,\": \").concat(r));Log.Log(\"SystemEvent\",\"Codex\",n,!1,\"Namespace\",\"SuperappConnector\",\"CustomData\",r)}function v(n,t){e(n,t);o(n,t)}function s(n){var t=new URLSearchParams(_w.location.search);return t.get(n)}function t(){return s(\"debug\")!=undefined}function y(){return s(\"logall\")==\"1\"}var u,r=\"6dc7564de7424d4698716df1b6d86867\",i=\"[SuperApp connector]\",h=(u=_w._sydConvConfig)===null||u===void 0?void 0:u.isSapphireDaily;n.logPageEvent=c;n.logCriticalInfo=f;n.logInfo=e;n.logError=l;n.logWarning=a;n.logToSLAPI=o;n.logInfoWithSLAPI=v})(SydneySuperAppLogger||(SydneySuperAppLogger={}));var sj_appHTML=function(n,t){var u,f,e,r,i,s,h;if(t&&n){var c=\"innerHTML\",l=\"script\",a=\"appendChild\",v=\"length\",y=\"src\",p=sj_ce,o=p(\"div\");if(o[c]=\"<br>\"+t,u=o.childNodes,o.removeChild(u[0]),f=o.getElementsByTagName(l),f)for(e=0;e<f[v];e++)r=p(l),i=f[e],i&&(r.type=i.type==\"module\"||i.type==\"importmap\"?i.type:\"text/javascript\",s=i.getAttribute(y),s?(r.setAttribute(y,s),r.setAttribute(\"crossorigin\",\"anonymous\")):(r.text=i[c],r.setAttribute(\"data-bing-script\",\"1\")),i.parentNode.replaceChild(r,i));for(h=_d.createDocumentFragment();u[v];)h[a](u[0]);n[a](h)}};var RichCaptionCellTemplate;(function(n){function s(n,s,h,c,y,p,w){var d,nt,k,b,g;if(f=s,r=h,i=n,t=_ge(c),d=_d.getElementsByClassName(\"b_rc_gb_template\"),d&&d[0]&&(u=d[0]),b=_d.getElementsByClassName(\"b_rc_gb_license\"),nt=_d.getElementsByClassName(\"b_rc_gb_seemore_btn\"),nt&&nt[0]?l():p&&v(),w&&a(),f>=r||y){o();return}k=_ge(\"rc_gb_hide\");k&&sj_be(k,\"click\",e);b=_d.getElementsByClassName(\"b_rc_gb_license\");b&&b[0]&&k&&(g=b[0].getElementsByClassName(\"rc_gb_attr\"),g&&g[0]&&(g[0].style.width=(u.clientWidth-k.clientWidth-70)/2+\"px\"))}function e(){t&&(t.style.transition=\"max-height 0.5s\");var n=_ge(\"rc_gb_hide\");n&&Log.Log(\"Show\",\"Expansion\",n.id,!1,\"AppNS\",n.getAttribute(\"data-appns\"),\"K\",n.getAttribute(\"data-k\"),\"Type\",n.getAttribute(\"data-exptype\"),\"Category\",\"CommonControls\");h()}function h(){t&&(t.style.maxHeight=r+\"px\");o()}function o(){var r=_ge(\"rc_gb_hide\"),n,t,i;r&&(sj_ue(r,\"click\",e),r.style.display=\"none\");n=_ge(\"rc_gb_expand\");n&&(sj_be(n,\"click\",c),n.style.display=\"table\");t=_d.getElementsByClassName(\"b_rc_gb_license\");t&&t[0]&&n&&(i=t[0].getElementsByClassName(\"rc_gb_attr\"),i&&i[0]&&(i[0].style.width=(u.clientWidth-n.clientWidth-70)/2+\"px\"))}function c(){var n=_ge(\"rc_gb_expand\");n&&i!=null&&n.setAttribute(\"href\",i);_ge(\"rc_gb_mock_link\")&&si_ct(_ge(\"rc_gb_mock_link\"))}function l(){var n=_d.getElementsByClassName(\"b_rc_gb_seemore_btn_container\"),t,i,r,u,f,e;if(n!=null&&n[0]!=null){for(t=n[0],i=0;t&&t.previousElementSibling!=null;)t=t.previousElementSibling,i+=t.clientHeight+12;r=_d.getElementsByClassName(\"b_rc_gb_sub_column\");r&&r[1]&&(u=r[1].clientHeight,u<i+62&&(n[0].style.display=\"none\",n[0].previousElementSibling!=null&&(f=n[0].previousElementSibling,e=f.clientHeight,f.style.height=e-28+u-i+\"px\")),n[0].style.height=u-i-12+\"px\")}}function a(){for(var n,i=_d.getElementsByClassName(\"b_rc_gb_sub_cell\"),r=function(t){var r=i[t],u;(r===null||r===void 0?void 0:r.querySelector(\".b_rcLink\"))&&(sj_be(r,\"click\",function(){window.open(r.querySelector(\".b_rcLink\").getAttribute(\"href\"),\"_blank\");var n=r.querySelector(\".b_rcLink\");n&&_w.si_T&&_w.si_T(n.getAttribute(\"h\"))}),((n=r.querySelector(\".b_rc_gb_text_wrapper\"))===null||n===void 0?void 0:n.querySelector(\"a\"))&&(u=r.querySelector(\".b_rc_gb_text_wrapper\").querySelector(\"a\"),sj_be(u,\"click\",function(n){n.stopPropagation()})))},t=0;t<i.length;t++)r(t)}function v(){var o=_d.getElementsByClassName(\"b_rc_gb_sub_section\"),n;if(o!=null&&o.length!=0&&(n=o[0].getElementsByClassName(\"b_rc_gb_sub_column\"),(n===null||n===void 0?void 0:n.length)==2)){var t=n[0].getElementsByClassName(\"b_rc_gb_sub_cell\"),i=n[1].getElementsByClassName(\"b_rc_gb_sub_cell\"),r=0,u=0;if(t==null||i==null||(t.length&&i.length)==0)return;for(var s=t[t.length-1],h=i[i.length-1],f=s,e=h;f!=null;)r+=f.clientHeight+12,f=f.previousElementSibling;while(e!=null)u+=e.clientHeight+12,e=e.previousElementSibling;var l=Math.max(r,u),a=Math.min(r,u),c=r<u?s:h,v=c.clientHeight;c.style.height=v-28+l-a+\"px\"}}var i=null,f=0,r=0,u=null,t=null;n.init=s})(RichCaptionCellTemplate||(RichCaptionCellTemplate={}));var WikiRichcardV2;(function(n){function s(n,s,h,c,l){var y,v,a,p;if(u=s,f=h,r=n,t=_ge(c),y=_d.getElementsByClassName(\"b_algoBigWiki\"),y&&y[0]&&(i=y[0]),a=_d.getElementsByClassName(\"b_wiki_license\"),u>=h||l){o();return}v=_ge(\"wiki_hide\");v&&sj_be(v,\"click\",e);a=_d.getElementsByClassName(\"b_wiki_license\");a&&a[0]&&v&&(p=a[0].getElementsByClassName(\"wiki_attr\"),p&&p[0]&&(p[0].style.width=(i.clientWidth-v.clientWidth-70)/2+\"px\"))}function e(){t&&(t.style.transition=\"max-height 0.5s\");var n=_ge(\"wiki_hide\");n&&Log.Log(\"Show\",\"Expansion\",n.id,!1,\"AppNS\",n.getAttribute(\"data-appns\"),\"K\",n.getAttribute(\"data-k\"),\"Type\",n.getAttribute(\"data-exptype\"),\"Category\",\"CommonControls\");h()}function h(){t&&(t.style.maxHeight=f+\"px\");o()}function o(){var u=_ge(\"wiki_hide\"),n,t,r;u&&(sj_ue(u,\"click\",e),u.style.display=\"none\");n=_ge(\"wiki_expand\");n&&(sj_be(n,\"click\",c),n.style.display=\"table\",n.tabIndex=-1);t=_d.getElementsByClassName(\"b_wiki_license\");t&&t[0]&&n&&(r=t[0].getElementsByClassName(\"wiki_attr\"),r&&r[0]&&(r[0].style.width=(i.clientWidth-n.clientWidth-70)/2+\"px\"))}function c(){var n=_ge(\"wiki_expand\");n&&n.setAttribute(\"href\",r);_ge(\"wiki_mock_link\")&&si_ct(_ge(\"wiki_mock_link\"))}var r=null,u=0,f=0,i=null,t=null;n.init=s})(WikiRichcardV2||(WikiRichcardV2={}));var ClickBackRSCustomControl = false;;var fab_config ={\"fabStyle\":1,\"fabSbAction\":\"OpenChat\",\"fabSbActionHover\":\"None\",\"fabSbActionData\":\"None\",\"fabTooltip\":\"\",\"micFabAlwaysVisible\":false,\"fabClickNoAS\":false,\"FabAddSuggestions\":false,\"DisableAlsoTryWhenHasPoleRS\":false};;sj_be(_w, \"click\", function() { _G.UIWP = true; }, 1);;\n//]]></script><script type=\"importmap\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\"> { \"imports\": {\"rms-answers-SharedStaticAssets-mdast-util-from-markdown\":\"https://r.bing.com/rp/G2Euh4cjJven1aPSKrDM9NUq6yg.gz.js\",\"rms-answers-SharedStaticAssets-mdast-util-gfm-table\":\"https://r.bing.com/rp/wMhh6_9VDsKmZ7dfjeYOjKlAlgA.gz.js\",\"rms-answers-SharedStaticAssets-micromark-extension-gfm-table\":\"https://r.bing.com/rp/TE0CHKImR3TkcyUPpok-I7o2h7g.gz.js\",\"rms-answers-SharedStaticAssets-markdown-it\":\"https://r.bing.com/rp/EHRBJkBRqQeZKe1mGpAflgE4ZYY.gz.js\",\"rms-answers-SharedStaticAssets-katex\":\"https://r.bing.com/rp/eN-_wsWWz8kIJ3Fn4UYnCSe8Pb0.gz.js\",\"rms-answers-SharedStaticAssets-docx\":\"https://r.bing.com/rp/qqrfLMsR6SckOOaNykIccyFrfOk.gz.js\",\"rms-answers-SharedStaticAssets-xlsx\":\"https://r.bing.com/rp/5vwIzI1aO9Zq-O9IhIjB3HiMgN4.gz.js\"} } </script><link id=\"conv-css-link\" rel=\"prefetch\" fetchpriority=\"low\" href=\"https://r.bing.com/rp/VgKNPbLDqvQHbWFFAKllFrmQVvI.gz.css\" type=\"text/css\" as=\"style\" /><div id=\"b_sydWelcomeTemplate\" class=\"b_ziCont\" data-priority=\"2\"><div class=\"b_wlcmHdr\"><div class=\"b_wlcmLogoCont\"><div class=\"b_wlcmLogo\" role=\"img\" aria-label=\"Copilot Logo\" tabindex=\"0\"></div><div class=\"b_wlcmName\" role=\"heading\" aria-level=\"2\">Copilot</div></div><div class=\"b_wlcmDesc\" role=\"heading\" aria-level=\"2\">Your everyday AI companion</div></div><div class=\"b_ziTileCont b_wlcmCont\" data-zi-iid=\"SERP.6375\"></div></div><div id=\"b_sydHeadBg\"></div><div id=\"b_sydConvCont\" _iid=\"SERP.5028\" data-priority=\"\"><div id=\"b_sydtoporpole\" class=\"b_sydConvAnsTest\"></div><div id=\"b_sydBgCover\"></div></div><span id=\"CodexInstLink\" class=\"b_hide\" _ct=\"ID=SERP,5025.1\" data-exlk=\"SERP,5026\"></span><span id=\"CodexInstExtLink\" class=\"b_hide\" _ct=\"ID=SERP,5026.1\"></span><span id=\"CodexCarouselInstLink\" class=\"b_hide\" _ct=\"ID=SERP,5027.1\"></span><div id=\"b_content\" class=\"\"><main aria-label=\"Search Results\"><div id=\"b_tween\" class=\"\"><div id=\"b_tween_searchResults\"><span class=\"sb_count\">About 310,000 results</span></div><div id=\"b_tween_searchTools\" class=\"b_hide\"><span class=\"ftrB\"><a class=\"ftrH\" id=\"h5159\" role=\"button\" aria-label=\"Filtered by Any time\" aria-expanded=\"false\" aria-controls=\"d5159\" aria-haspopup=\"true\" href=\"javascript:\" h=\"ID=SERP,5539.1\"><span class=\"fs_label\">Any time</span><span class=\"sw_ddbk\"></span> </a></span><div class=\"toggle_item\"\n             id=\"ntf_newtabfil\" role=\"button\"\n             aria-pressed=\"true\"\n             aria-disabled=\"false\"\n             tabindex=\"0\" data-appns=\"SERP\" data-k=\"6361.0\"><div class=\"ntf_label toggle_label nt_tit\" id=\"ntf_newtabfil_label\">Open links in new tab</div><div class=\"nt_val toggle_ctrl\"><div id=\"ntf_newtabfil_ctrl\" class=\"ntf_img  toggle_on  toggle_img\" role=\"presentation\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 16\"><path d=\"M28 16H8A8 8 0 0 1 8 0h20a8 8 0 0 1 0 16z\" class=\"bg\"/><path d=\"M28 15.5H8a7.5 7.5 0 0 1 0-15h20a7.5 7.5 0 0 1 0 15z\" class=\"bgOverlay\"/><circle cx=\"28\" cy=\"8\" r=\"5\" fill=\"#fff\" class=\"indicator\"/></svg></div></div></div></div></div><ol id=\"b_results\" class=\"\"><li class=\"b_algo b_algoBorder b_algoBigWiki b_algo_feedback b_algoBigWiki2 b_wiki_bg_color_kc b_vtl_deeplinks\" data-id=\"\" data-npswowid='6D08AF03-718B-4C7D-8531-698B8E2E7E96'><div class=\"b_wiki_bottom_cover\"><div class=\"b_wiki_cover\"></div></div><div class=\"wiki_seemore\" id=\"wiki_hide\" data-appns=\"SERP\" data-k=\"6377.1\"><div>See more</div><img class=\"wiki_arrow rms_img\" alt=\"See more\" height=\"16\" width=\"16\" src=\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20focusable%3D%22false%22%20viewBox%3D%220%200%2016%2016%22%3E%0D%0A%09%3Cpath%20id%3D%22wiki_arrow%22%20d%3D%22M5.707%2015.707l7-7a1%201%200%200%200%200-1.414l-7-7a1%201%200%201%200-1.414%201.414l6.293%206.293-6.293%206.293a1%201%200%201%200%201.414%201.414z%22%20fill%3D%22%23fff%22%20%2F%3E%0D%0A%3C%2Fsvg%3E\" /></div><a class=\"wiki_seemore\" id=\"wiki_expand\"><div>See all on Wikipedia</div><img class=\"wiki_arrow rms_img\" alt=\"See more\" height=\"16\" width=\"16\" src=\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20focusable%3D%22false%22%20viewBox%3D%220%200%2016%2016%22%3E%0D%0A%09%3Cpath%20id%3D%22wiki_arrow%22%20d%3D%22M5.707%2015.707l7-7a1%201%200%200%200%200-1.414l-7-7a1%201%200%201%200-1.414%201.414l6.293%206.293-6.293%206.293a1%201%200%201%200%201.414%201.414z%22%20fill%3D%22%23fff%22%20%2F%3E%0D%0A%3C%2Fsvg%3E\" /></a><div Class=\"b_algo_group\"><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=04069a66b8059fd6JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTIxOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5219.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=90&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution b_nav\" u=\"0N|5190|5002847002886172|YKRaF5XPrrjjCAG29VgXZV8_WYrfMcSF\" tabindex=\"0\"><cite>https://en.wikipedia.org/wiki/Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5220.1\"></span></span></div></div></div></a></div><h2 class=\" b_topTitle\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=04069a66b8059fd6JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTIxOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5219.2\">Microsoft - Wikipedia</a></h2><div class=\"b_caption hasdl\" role=\"contentinfo\"></div><div id=\"5599\" class=\"b_WikipediaGoBigAnswer b_rc_gb_window\"data-dataurl=/wiki?hash=3690C363608079D1A348&amp;order=2%2c3%2c4%2c5%2c6&amp;width=608&amp;open=0&amp;accId=TopWikiRichCardV2&amp;appNS=SERP&amp;containsHeroSection=True&amp;bgIndex=17%2c13%2c9%2c1%2c5&amp;sectionLines=5%2c8%2c5%2c5%2c5&amp;answerID=5599&amp;DataSource=OutboardDUMainline><div class=\"b_rc_gb_sub b_rc_gb_sub_hero\"><div class=\"b_rc_gb_sub_column\"><div class=\"b_rc_gb_sub b_rc_gb_sub_hero\"><div class=\"b_rc_gb_sub_cell b_rc_gb_sub_text\"><p class=\"b_paractl\">Microsoft Corporation is<strong> an American multinational corporation and technology company headquartered</strong> in Redmond, Washington.  Microsoft's best-known software products are the Windows line of operating systems, the Microsoft 365 suite of productivity applications, and the Edge web browser. Its flagship … <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ba3b694dc442a8dfJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA1Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6052.1\">See more</a></p></div></div></div></div><div class=\"b_rc_gb_sub b_rc_gb_sub_section b_rc_gb_scroll\" id=\"b_rc_gb_origin\" data-priority='2'><div class=\"b_rc_gb_sub_column\"><div class=\"b_rc_gb_sub_cell 5599RCTC2 b_rc_gb_sub_text b_rc_gb_template_bg_17\" data-expansion-id=\"5599RCTC2\" data-appns=\"SERP\" data-k=\"6060\" data-title=History tabindex=\"0\"><div class=\"b_rc_gb_sub_title\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f017989ac0ed1801JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTg2Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0hpc3Rvcnk&amp;ntb=1\" h=\"ID=SERP,5862.1\">History</a></div><div class=\"b_rc_gb_text_wrapper b_wiki_display_order_0\"><p class=\"b_paractl\"><span class=\"b_promoteText\">1972–1985: Founding</span><br />Childhood friends <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e8a82a8e9e485f90JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA1NQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUJpbGwlMjBHYXRlcyUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6055.1\">Bill Gates</a> and <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=2c33f877821d30a3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA1Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPVBhdWwlMjBBbGxlbiUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6056.1\">Paul Allen</a> sought to make a business using their skills in <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0fb021aaaa59124fJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA1Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUNvbXB1dGVyJTIwcHJvZ3JhbW1pbmclMjB3aWtpcGVkaWEmZm9ybT1XSUtJUkU&amp;ntb=1\" h=\"ID=SERP,6057.1\">computer</a>… <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=65420eff7eb51214JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA1OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0hpc3Rvcnk&amp;ntb=1\" h=\"ID=SERP,6058.1\">See more</a></p></div></div><div class=\"b_rc_gb_sub_cell b_rc_gb_sub_image\" style=\"height:82px\"data-priority='2'><div class=\"b_rc_gb_img_wrapper\" data-expansion-id=\"5599RCTC4\"><a title=\"Corporate identity\" aria-label=\"See all on {0}\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0b6d08e41ba10211JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjAyOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9pZGVudGl0eQ&amp;ntb=1\" h=\"ID=SERP,6028.1\"><div class=\"cico\" style=\"width:123px;height:82px;\"><img height=\"82\" width=\"123\" data-src-hq=\"/th?id=ODL.f8ffa42e0fcdf419439540edbbbe6abe&amp;w=123&amp;h=82&amp;c=10&amp;rs=1&amp;qlt=99&amp;o=6&amp;pid=13.1\" alt=\"Corporate identity image\" data-priority=\"2\" id=\"emb2FB8417C\" class=\"rms_img\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" /></div></a></div><div class=\"b_rc_gb_img_wrapper\" data-expansion-id=\"5599RCTC3\"><a title=\"Corporate affairs\" aria-label=\"See all on {0}\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8a62ecc215295a64JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTkzMA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9hZmZhaXJz&amp;ntb=1\" h=\"ID=SERP,5930.1\"><div class=\"cico\" style=\"width:163px;height:82px;\"><img height=\"82\" width=\"163\" data-src-hq=\"/th?id=ODL.7c1d9fac81d403478d7553c18216052c&amp;w=163&amp;h=82&amp;c=10&amp;rs=1&amp;qlt=99&amp;o=6&amp;pid=13.1\" alt=\"Corporate affairs image\" data-priority=\"2\" id=\"emb115E558C0\" class=\"rms_img\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" /></div></a></div></div><div class=\"b_rc_gb_sub_cell 5599RCTC4 b_rc_gb_sub_text b_rc_gb_template_bg_9\" data-expansion-id=\"5599RCTC4\" data-appns=\"SERP\" data-k=\"6068\" data-title=Corporate_identity tabindex=\"0\"><div class=\"b_rc_gb_sub_title\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c3705a50c2db42e2JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjAyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9pZGVudGl0eQ&amp;ntb=1\" h=\"ID=SERP,6027.1\">Corporate identity</a></div><div class=\"b_rc_gb_text_wrapper b_wiki_display_order_0\"><p class=\"b_paractl\"><span class=\"b_promoteText\">Corporate culture</span><br />Technical references for developers and articles for various Microsoft magazines such as Microsoft … <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=cf9d999b6ab0ccf5JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA2Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9pZGVudGl0eQ&amp;ntb=1\" h=\"ID=SERP,6066.1\">See more</a></p></div></div><div class=\"b_rc_gb_sub_cell 5599RCTC6 b_rc_gb_sub_text b_rc_gb_template_bg_5\" data-expansion-id=\"5599RCTC6\" data-appns=\"SERP\" data-k=\"6080\" data-title=External_links tabindex=\"0\"><div class=\"b_rc_gb_sub_title\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=86c89fe0b5a642f3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0V4dGVybmFsX2xpbmtz&amp;ntb=1\" h=\"ID=SERP,6047.1\">External links</a></div><div class=\"b_rc_gb_text_wrapper b_wiki_display_order_0\"><p class=\"b_paractl\">• <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=3c1d097ecdd13455JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3NQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS8&amp;ntb=1\" h=\"ID=SERP,6075.1\">Official website</a><br />• Business data for Microsoft Corporation:<br />• <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9125f011fc2743a3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9vcGVuY29ycG9yYXRlcy5jb20vY29ycG9yYXRlX2dyb3VwaW5ncy9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,6076.1\">Microsoft companies</a> grouped at <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=fd53dd20b10a146cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU9wZW5Db3Jwb3JhdGVzJTIwd2lraXBlZGlhJmZvcm09V0lLSVJF&amp;ntb=1\" h=\"ID=SERP,6077.1\">OpenCorporates</a> <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=12d5646a2c0f5f94JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0V4dGVybmFsX2xpbmtz&amp;ntb=1\" h=\"ID=SERP,6078.1\">See more</a></p></div></div></div><div class=\"b_rc_gb_sub_column\"><div class=\"b_rc_gb_sub_cell b_rc_gb_sub_image\" style=\"height:82px\"data-priority='2'><div class=\"b_rc_gb_img_wrapper\" data-expansion-id=\"5599RCTC-1\"><a title=\"Overview\" aria-label=\"See all on {0}\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=81a04b8d73ca5871JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTYwMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5602.1\"><div class=\"cico\" style=\"width:298px;height:82px;\"><img height=\"82\" width=\"298\" data-src-hq=\"/th?id=ODL.28e1dfa3a2e2d272e68fc45a3f3b1ffb&amp;w=298&amp;h=82&amp;c=10&amp;rs=1&amp;qlt=99&amp;o=6&amp;pid=13.1\" alt=\"Overview image\" data-priority=\"2\" id=\"emb22E42971F\" class=\"rms_img\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" /></div></a></div></div><div class=\"b_rc_gb_sub_cell 5599RCTC3 b_rc_gb_sub_text b_rc_gb_template_bg_13\" data-expansion-id=\"5599RCTC3\" data-appns=\"SERP\" data-k=\"6065\" data-title=Corporate_affairs tabindex=\"0\"><div class=\"b_rc_gb_sub_title\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=490b59718b425b7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTkyOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9hZmZhaXJz&amp;ntb=1\" h=\"ID=SERP,5929.1\">Corporate affairs</a></div><div class=\"b_rc_gb_text_wrapper b_wiki_display_order_0\"><p class=\"b_paractl\"><span class=\"b_promoteText\">Board of directors</span><br />The company is run by a <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f5af36a719e9144cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA2MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUJvYXJkJTIwb2YlMjBkaXJlY3RvcnMlMjB3aWtpcGVkaWEmZm9ybT1XSUtJUkU&amp;ntb=1\" h=\"ID=SERP,6061.1\">board of directors</a> made up of mostly company outsiders, as is customary for publicly traded companies. Members of the board of directors as of December 2023 are <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d71d49c17b64a588JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA2Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPVNhdHlhJTIwTmFkZWxsYSUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6062.1\">Satya Nadella</a> <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=693104481e5cf757JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA2Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9hZmZhaXJz&amp;ntb=1\" h=\"ID=SERP,6063.1\">See more</a></p></div></div><div class=\"b_rc_gb_sub_cell 5599RCTC5 b_rc_gb_sub_text b_rc_gb_template_bg_1\" data-expansion-id=\"5599RCTC5\" data-appns=\"SERP\" data-k=\"6074\" data-title=See_also tabindex=\"0\"><div class=\"b_rc_gb_sub_title\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9eb238a187558ba3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjAzNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I1NlZV9hbHNv&amp;ntb=1\" h=\"ID=SERP,6037.1\">See also</a></div><div class=\"b_rc_gb_text_wrapper b_wiki_display_order_0\"><p class=\"b_paractl\">• <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ae287903ee57d05bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA2OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUxpc3QlMjBvZiUyME1pY3Jvc29mdCUyMHNvZnR3YXJlJTIwd2lraXBlZGlhJmZvcm09V0lLSVJF&amp;ntb=1\" h=\"ID=SERP,6069.1\">List of Microsoft software</a><br />• <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d5f69beef4e835cbJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU1pY3Jvc29mdCUyMGhhcmR3YXJlJTIwd2lraXBlZGlhJmZvcm09V0lLSVJF&amp;ntb=1\" h=\"ID=SERP,6070.1\">Microsoft hardware</a><br />• <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1c30876e1cd51600JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUxpc3QlMjBvZiUyMG1lcmdlcnMlMjBhbmQlMjBhY3F1aXNpdGlvbnMlMjBieSUyME1pY3Jvc29mdCUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6071.1\">List of mergers and acquisitions by Microsoft</a> <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f3a9b197783b17dcJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I1NlZV9hbHNv&amp;ntb=1\" h=\"ID=SERP,6072.1\">See more</a></p></div></div></div></div></div><div id=\"wikiWidgetContainer\" class=\"b_widgetContainer\" data-priority=\"2\"><div class=\"b_rc_gb_w_header\"><div class=\"b_rc_gb_header_top\"><div title=\"From Wikipedia\" class=\"b_rc_gb_source\">From Wikipedia</div><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e200665cd7528669JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTYwMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5601.1\"><img alt=\"From Wikipedia\" class=\"shared_icon rms_img\" src=\"data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2012%2012%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%0A%3Cpath%20d%3D%22M2.49999%201C1.67157%201%200.999995%201.67157%200.999995%202.5V9.5C0.999995%2010.3284%201.67157%2011%202.49999%2011H9.49996C10.3284%2011%2010.9999%2010.3284%2010.9999%209.5V7.26923C10.9999%206.99309%2011.2238%206.76923%2011.4999%206.76923C11.7761%206.76923%2011.9999%206.99309%2011.9999%207.26923V9.5C11.9999%2010.8807%2010.8807%2012%209.49996%2012H2.49999C1.11928%2012%200%2010.8807%200%209.5V2.5C0%201.11929%201.11928%200%202.49999%200H4.73075C5.00689%200%205.23074%200.223858%205.23074%200.5C5.23074%200.776142%205.00689%201%204.73075%201H2.49999ZM6.76926%200.5C6.76926%200.223858%206.99311%200%207.26925%200H11.5C11.7761%200%2012%200.223858%2012%200.5V4.73077C12%205.00691%2011.7761%205.23077%2011.5%205.23077C11.2239%205.23077%2011%205.00691%2011%204.73077V1.70711L7.6228%205.08433C7.42754%205.27959%207.11096%205.27959%206.9157%205.08433C6.72044%204.88906%206.72044%204.57248%206.9157%204.37722L10.2929%201H7.26925C6.99311%201%206.76926%200.776142%206.76926%200.5Z%22%20fill%3D%22%23767676%22%2F%3E%0D%0A%3C%2Fsvg%3E%0D%0A\" /></a></div><div title=\"Content\" class=\"b_rc_gb_widget_title b_rc_gb_w_item\">Content</div></div><div class=\"b_rc_gb_w_content\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f017989ac0ed1801JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTg2Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0hpc3Rvcnk&amp;ntb=1\" h=\"ID=SERP,5862.2\"><div title=\"History\" class=\"b_rc_gb_widget_link b_rc_gb_w_item 5599RCTC2\">History</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=490b59718b425b7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTkyOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9hZmZhaXJz&amp;ntb=1\" h=\"ID=SERP,5929.2\"><div title=\"Corporate affairs\" class=\"b_rc_gb_widget_link b_rc_gb_w_item 5599RCTC3\">Corporate affairs</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c3705a50c2db42e2JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjAyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0NvcnBvcmF0ZV9pZGVudGl0eQ&amp;ntb=1\" h=\"ID=SERP,6027.2\"><div title=\"Corporate identity\" class=\"b_rc_gb_widget_link b_rc_gb_w_item 5599RCTC4\">Corporate identity</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9eb238a187558ba3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjAzNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I1NlZV9hbHNv&amp;ntb=1\" h=\"ID=SERP,6037.2\"><div title=\"See also\" class=\"b_rc_gb_widget_link b_rc_gb_w_item 5599RCTC5\">See also</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=86c89fe0b5a642f3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjA0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0I0V4dGVybmFsX2xpbmtz&amp;ntb=1\" h=\"ID=SERP,6047.2\"><div title=\"External links\" class=\"b_rc_gb_widget_link b_rc_gb_w_item 5599RCTC6\">External links</div></a></div><a id=\"wikiWidgetCtaBtn\" class=\"b_widgetCtaBtn\" href=\"\" h=\"ID=SERP,6379.1\">See all sections</a><div id=\"wikiWidgetGradient\" class=\"b_widgetGrad\"></div></div><span id=\"wiki_mock_link\" style=\"display:none\" _ct=\"ID=SERP,6049.1\"></span></div><div elementtiming=frp.MiddleOfPage style=\"pointer-events:none;margin-top:-1px;height:1px;width:1px;font-size:1px;position:absolute;top:0;right:0;\" tabindex=\"-1\"> &nbsp; </div><div class=\"b_wiki_license\"><div class=\"wiki_attr b_divdef\"><span title=\"Wikipedia text under CC-BY-SA license\">Wikipedia text under <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6b2d99f1f051f86cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM4Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLw&amp;ntb=1\" h=\"ID=SERP,6382.1\">CC-BY-SA license</a></span></div></div><div class=\"b_gobig_feedback\"><div id=\"fdbk_thmb26\" class=\"fdbk_thmb_root  \" data-priority=\"2\" aria-live=\"polite\"><div id=\"fdbk_emotion26\" class=\"fdbk_emotion\"></div><span id=\"fdbtext_26\" class=\"fdbtext\">Feedback</span><a id=\"thumb_t26\" class=\"thumb_y \" role=\"button\" aria-label=\"Feedback Like\" href=\"javascript:void(0)\" h=\"ID=SERP,6384.1\"></a><a id=\"thumb_f26\" class=\"thumb_n \" role=\"button\" aria-label=\"Feedback Dislike\" href=\"javascript:void(0)\" h=\"ID=SERP,6385.1\"></a><div id=\"thumbUpTips26\" class=\"fdbk_hide fdbtext\"><span>Thanks!</span><a id=\"thumb_tum26\" role=\"button\" aria-label=\"Tell us more\" href=\"javascript:void(0)\" h=\"ID=SERP,6386.1\">Tell us more</a></div></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8fbc98b9831c1cebJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTI0OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlzdG9yeV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,5248.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=91&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"1|5107|4767040408601707|nItsj9zsNFZ3zLU0oCzF2MRogv5B_MQa\" tabindex=\"0\"><cite>https://en.wikipedia.org/wiki/History_of_Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5249.1\"></span></span></div></div></div></a></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8fbc98b9831c1cebJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTI0OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlzdG9yeV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,5248.2\">History of Microsoft - Wikipedia</a></h2><div class=\"b_caption\" role=\"contentinfo\"><div class=\"b_wikiRichcard_noHeroSection\"><div id=\"WF_tabcontrol_10_EF70D6\" class=\"b_wikiRichcard\"><div id=\"tabcontrol_10_EF70D6\" class=\"tab-container\" data-wire=\"I;tab;; |B;a;;I|\" data-appns=\"SERP\" data-k=\"6142.2\"><div class=\"tab-head HeroTab\"><div id=\"tabcontrol_10_EF70D6_navl\" class=\"tab-navl\" data-appns=\"SERP\" data-k=\"6387.1\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" enable-background=\"new 0 0 16 16\" width=\"16\" height=\"40\"><path class=\"sv_ch\" d=\"M12.29.235c-.312-.313-.818-.313-1.131 0l-7.2 7.2c-.148.148-.234.355-.234.565 0 .21.086.417.234.566l7.2 7.2c.312.313.818.313 1.131 0 .313-.312.313-.818 0-1.131l-6.634-6.635 6.634-6.634c.313-.312.312-.819 0-1.131z\" /></svg></div><div class=\"tab-menu tab-hasnav\" style=\"width:544px\"><ul id=\"tabcontrol_10_EF70D6_menu\" style=\"margin-left:0px;\" role=\"tablist\" data-dataurl=\"\"><li data-dataurl=\"\"\n                            id=\"tab_2_EF6AB1_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab tab-active\"\n                            style=\" width:66px;\" data-w=\"66\" data-ow=\"98\" data-content=\"tab_2_EF6AB1\"\n                            tabindex=\"0\" role=\"tab\"\n                            aria-controls=\"tab_2_EF6AB1\"\n                            aria-selected=\"true\" data-appns=\"SERP\" data-k=\"6109.1\">Overview</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=1&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_3_EF6D00_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:189px;\"\n                            title=\"1975–1985: The founding of Microsoft\" data-w=\"189\" data-ow=\"221\" data-content=\"tab_3_EF6D00\" role=\"tab\"\n                            aria-controls=\"tab_3_EF6D00\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6133.1\">1975–1985: The founding of Microsoft</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=2&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_4_EF6DA9_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:191px;\"\n                            title=\"1985–1994: Windows and Office\" data-w=\"191\" data-ow=\"223\" data-content=\"tab_4_EF6DA9\" role=\"tab\"\n                            aria-controls=\"tab_4_EF6DA9\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6134.1\">1985–1994: Windows and Office</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=3&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_5_EF6E12_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:193px;\"\n                            title=\"1995–2007: Foray into the Web, Windows 95, Windows XP, and Xbox\" data-w=\"193\" data-ow=\"225\" data-content=\"tab_5_EF6E12\" role=\"tab\"\n                            aria-controls=\"tab_5_EF6E12\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6135.1\">1995–2007: Foray into the Web, Windows 95, Windows XP, and Xbox</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=4&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_6_EF6E72_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:195px;\"\n                            title=\"2007–2011: Microsoft Azure, Windows Vista, Windows 7, and Microsoft Stores\" data-w=\"195\" data-ow=\"227\" data-content=\"tab_6_EF6E72\" role=\"tab\"\n                            aria-controls=\"tab_6_EF6E72\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6136.1\">2007–2011: Microsoft Azure, Windows Vista, Windows 7, and Microsoft Stores</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=5&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_7_EF6ED3_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:199px;\"\n                            title=\"2011–2014: Windows 8, Xbox One, Outlook.com, and Surface devices\" data-w=\"199\" data-ow=\"231\" data-content=\"tab_7_EF6ED3\" role=\"tab\"\n                            aria-controls=\"tab_7_EF6ED3\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6137.1\">2011–2014: Windows 8, Xbox One, Outlook.com, and Surface devices</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=6&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_8_EF6F30_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:198px;\"\n                            title=\"2014–2020: Windows 10, Windows 10 Mobile, Microsoft Edge and HoloLens\" data-w=\"198\" data-ow=\"230\" data-content=\"tab_8_EF6F30\" role=\"tab\"\n                            aria-controls=\"tab_8_EF6F30\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6138.1\">2014–2020: Windows 10, Windows 10 Mobile, Microsoft Edge and HoloLens</li><li data-dataurl=\"/wiki?hash=CA1E75B78237E3E4BA7A&amp;order=1%2c2%2c3%2c4%2c5%2c6%2c7%2c8&amp;width=608&amp;open=7&amp;accId=WikiRichcard&amp;appNS=SERP&amp;containsHeroSection=False&amp;DataSource=DefaultProd\"\n                            id=\"tab_9_EF6F8B_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" width:193px;\"\n                            title=\"2020–present: Acquisitions, Xbox Series X/S, and Windows 11\" data-w=\"193\" data-ow=\"225\" data-content=\"tab_9_EF6F8B\" role=\"tab\"\n                            aria-controls=\"tab_9_EF6F8B\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6139.1\">2020–present: Acquisitions, Xbox Series X/S, and Windows 11</li></ul></div><div id=\"tabcontrol_10_EF70D6_navr\" class=\"tab-navr\" data-appns=\"SERP\" data-k=\"6388.1\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" enable-background=\"new 0 0 16 16\" width=\"16\" height=\"40\"><path class=\"sv_ch\" d=\"M3.735 1.366l6.634 6.634-6.634 6.634c-.313.313-.313.819 0 1.131.313.313.819.313 1.131 0l7.2-7.2c.148-.148.234-.355.234-.565 0-.21-.086-.417-.234-.566l-7.2-7.2c-.313-.313-.819-.313-1.131 0s-.313.82 0 1.132z\" /></svg></div></div><div class=\"tab-content\"><div id=\"tab_2_EF6AB1\" data-appns=\"SERP\" data-k=\"6109.2\" role=\"tabpanel\" aria-labelledby=\"tab_2_EF6AB1_head\" data-priority=\"\"><div class=\"b_clearfix b_overflow\"><div class=\"b_floatR_img\"><div class=\"cico\" style=\"width:100px;height:100px;\"><img height=\"100\" width=\"100\" data-src-hq=\"/th?id=ODL.ee0e6c84a342cb00cf999207b30498f2&amp;w=100&amp;h=100&amp;c=12&amp;pcl=faf9f7&amp;o=6&amp;pid=13.1\" role=\"presentation\" data-priority=\"2\" id=\"emb35F69EF7C\" class=\"rms_img\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" /></div></div><p class=\"b_paractl\"><a href=\"/search?q=Microsoft%20wikipedia&amp;form=WIKIRE\" h=\"ID=SERP,6120.1\">Microsoft</a> is a multinational computer technology corporation. Microsoft was founded on April 4, 1975, by <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c6e5bc64bbb7aa9cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUJpbGwlMjBHYXRlcyUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6121.1\">Bill Gates</a> and <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=69559e55b5ef4786JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPVBhdWwlMjBBbGxlbiUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6122.1\">Paul Allen</a> in <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=77d0942ac8633c1bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUFsYnVxdWVycXVlJTJDJTIwTmV3JTIwTWV4aWNvJTIwd2lraXBlZGlhJmZvcm09V0lLSVJF&amp;ntb=1\" h=\"ID=SERP,6123.1\">Albuquerque, New Mexico</a>.  Its current best-selling products are the <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=709a122ec9716ce3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU1pY3Jvc29mdCUyMFdpbmRvd3MlMjB3aWtpcGVkaWEmZm9ybT1XSUtJUkU&amp;ntb=1\" h=\"ID=SERP,6124.1\">Microsoft Windows</a> <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=3e0d700620a8658eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU9wZXJhdGluZyUyMHN5c3RlbSUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6125.1\">operating system</a>; <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=66bec30a31b559a7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU1pY3Jvc29mdCUyME9mZmljZSUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6126.1\">Microsoft Office</a>, a suite of productivity software; <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7d3b4900ee5f9ba3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPVhib3glMjB3aWtpcGVkaWEmZm9ybT1XSUtJUkU&amp;ntb=1\" h=\"ID=SERP,6127.1\">Xbox</a>, a line of entertainment of games, music, and video; <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=38676e12b5bcfdf7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPUJpbmclMjAoc2VhcmNoJTIwZW5naW5lKSUyMHdpa2lwZWRpYSZmb3JtPVdJS0lSRQ&amp;ntb=1\" h=\"ID=SERP,6128.1\">Bing</a>, a line of search engines; and <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=3c4825c276c0a8c6JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjEyOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPU1pY3Jvc29mdCUyMEF6dXJlJTIwd2lraXBlZGlhJmZvcm09V0lLSVJF&amp;ntb=1\" h=\"ID=SERP,6129.1\">Microsoft Azure</a>, …</p></div></div><div id=\"tab_3_EF6D00\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6133.2\" role=\"tabpanel\" aria-labelledby=\"tab_3_EF6D00_head\" data-priority=\"2\"></div><div id=\"tab_4_EF6DA9\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6134.2\" role=\"tabpanel\" aria-labelledby=\"tab_4_EF6DA9_head\" data-priority=\"2\"></div><div id=\"tab_5_EF6E12\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6135.2\" role=\"tabpanel\" aria-labelledby=\"tab_5_EF6E12_head\" data-priority=\"2\"></div><div id=\"tab_6_EF6E72\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6136.2\" role=\"tabpanel\" aria-labelledby=\"tab_6_EF6E72_head\" data-priority=\"2\"></div><div id=\"tab_7_EF6ED3\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6137.2\" role=\"tabpanel\" aria-labelledby=\"tab_7_EF6ED3_head\" data-priority=\"2\"></div><div id=\"tab_8_EF6F30\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6138.2\" role=\"tabpanel\" aria-labelledby=\"tab_8_EF6F30_head\" data-priority=\"2\"></div><div id=\"tab_9_EF6F8B\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6139.2\" role=\"tabpanel\" aria-labelledby=\"tab_9_EF6F8B_head\" data-priority=\"2\"></div></div></div><div class=\"wiki_attr b_divdef\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d83977ac2d5978faJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE0MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlzdG9yeV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,6140.1\">Wikipedia</a><span> &#183; Text under <a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=291066e63c3f1ba8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE0MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLw&amp;ntb=1\" h=\"ID=SERP,6141.1\">CC-BY-SA license</a></span></div></div></div></div><div class=\"scs_child_rpr rpr_light\"><div class=\"pageRecoContainer \" data-fbhlsel=\".pageRecoContainer\"><div class=\"recommendationsTableTitle\"><h2 class=\"\">Explore further</h2></div><div class=\"pagereco_TCntr\"><div class=\"pagereco_TRow  \"><div class=\"pagereco_TTitle\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9ea1b6ff4f91e5eeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE0OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9jb250ZW50LmRzcC5jby51ay9hLWJyaWVmLWhpc3Rvcnktb2YtbWljcm9zb2Z0LXRoZS13b3JsZHMtYmlnZ2VzdC1zb2Z0d2FyZS1jb21wYW55&amp;ntb=1\" h=\"ID=SERP,6149.1\"><div class=\"b_fpl_cntr\"><div class=\"b_fpl_icon\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-alt=\"Global web icon\" data-role=\"img\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.6c1254af-4643-43c4-96a8-ed3bf9c6092a&amp;w=16&amp;h=16&amp;o=6&amp;pid=1.2\"></div></div></div><div class=\"b_fpl_attr\"><div class=\"b_title\">A Brief History of <strong>Microsoft</strong> - The Worlds Biggest Software …</div></div></div></a></div><div class=\"pagereco_TDomain\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9ea1b6ff4f91e5eeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE0OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9jb250ZW50LmRzcC5jby51ay9hLWJyaWVmLWhpc3Rvcnktb2YtbWljcm9zb2Z0LXRoZS13b3JsZHMtYmlnZ2VzdC1zb2Z0d2FyZS1jb21wYW55&amp;ntb=1\" h=\"ID=SERP,6149.2\"><div class=\"b_attr\"><cite>content.dsp.co.uk</cite></div></a></div></div><div class=\"pagereco_TRow  \"><div class=\"pagereco_TTitle\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e4aaeb38b4ce9a71JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE1MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZWxpbmVfb2ZfTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6150.1\"><div class=\"b_fpl_cntr\"><div class=\"b_fpl_icon\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-alt=\"Global web icon\" data-role=\"img\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=16&amp;h=16&amp;o=6&amp;pid=1.2\"></div></div></div><div class=\"b_fpl_attr\"><div class=\"b_title\"><strong>Timeline of Microsoft</strong> - Wikipedia</div></div></div></a></div><div class=\"pagereco_TDomain\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e4aaeb38b4ce9a71JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE1MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZWxpbmVfb2ZfTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6150.2\"><div class=\"b_attr\"><cite>en.wikipedia.org</cite></div></a></div></div></div><div class=\"recommendationsTableFeedback\"><div class=\"fbans\"><div class=\"b_footnote\"><a id=\"fdbkans_0\" class=\"hlig\" target=\"_blank\" data-fbhlsel=\".pageRecoContainer\" role=\"button\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b582f6f515430eb6JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM4OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1amF2YXNjcmlwdDp2b2lkKDAp&amp;ntb=1\" h=\"ID=SERP,6389.1\">Recommended to you based on what's popular • Feedback</a></div></div></div></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=14f8d49ace7b9cc7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTI5Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0X1dpbmRvd3M&amp;ntb=1\" h=\"ID=SERP,5293.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=92&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"2|5262|4873551311212689|YDLEWI2FmZuoPCuksVnxn5v2RwgQMmF-\" tabindex=\"0\"><cite>https://en.wikipedia.org/wiki/Microsoft_…</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5294.1\"></span></span></div></div></div></a></div><div class=\"b_imgcap_altitle b_imgcap_nosc\"><div class=\"b_imagePair square_mp reverse\"><div class=\"inner\"><div><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-data-priority=\"2\" data-height=\"80\" data-width=\"80\" data-class=\"b_circleImage b_ci_image_overlay b_onfaimg  rms_img\" data-fdopt=\"False\" data-data-overlaylink=\"/images/search?view=detailV2&amp;ccid=r+Df5RrJ&amp;id=F5526393BB9754BC315B896614B44122B955E8F8&amp;thid=OIP.r-Df5RrJ7GJESlLra2zA3AAAAA&amp;mediaurl=https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Windows_Logo_(1992-2001).svg/220px-Windows_Logo_(1992-2001).svg.png&amp;exph=190&amp;expw=220&amp;q=Microsoft+wikipedia&amp;ck=02C8214A3E0328F3368819B76D270472&amp;idpp=rc&amp;idpview=singleimage&amp;form=rc2idp\" data-aria-hidden=\"true\" data-title=\"Explore this image\" data-src=\"/th?id=OIP.r-Df5RrJ7GJESlLra2zA3AAAAA&amp;w=80&amp;h=80&amp;c=1&amp;vt=10&amp;bgcl=eedf62&amp;r=0&amp;o=6&amp;pid=5.1\"></div><div class=\"b_greyBackgroundModal\"></div></div></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=14f8d49ace7b9cc7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTI5Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0X1dpbmRvd3M&amp;ntb=1\" h=\"ID=SERP,5293.2\">Microsoft Windows - Wikipedia</a></h2><p class=\"b_lineclamp2 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><strong>Microsoft</strong> Windows is a product line of proprietary graphical operating systems developed and marketed by <strong>Microsoft</strong>. It is grouped into families …</p><div class=\"b_factrow b_twofr\"><div class=\"b_vlist2col\"><ul><li><div><span><strong>Developer:</strong> </span><a title=\"Microsoft\" href=\"/search?q=Microsoft+wikipedia&amp;FORM=LFACTRE\" h=\"ID=SERP,5289.1\">Microsoft</a></div></li><li><div><strong>Latest release:</strong> 22H2 (10.0.22621.2428) (October 10, 2023; 0 days ago) [&#177;]</div></li></ul><ul><li><div><strong>Initial release:</strong> November 20, 1985; 37 years ago</div></li></ul></div></div></div></div><div class=\"b_caption b_rich b_stsp2\" role=\"contentinfo\"></div><div class=\"pageRecoPlaceholder\" data-tag=\"RelatedPageRecommendations.RecommendationsClickback\"></div><div class=\"scs_child_rpr rpr_light\"><div class=\"pageRecoContainer \" data-fbhlsel=\".pageRecoContainer\"><div class=\"recommendationsTableTitle\"><h2 class=\"\">Explore further</h2></div><div class=\"pagereco_TCntr\"><div class=\"pagereco_TRow  \"><div class=\"pagereco_TTitle\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d28cf3cb5e564ae9JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE3MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aGljaC12ZXJzaW9uLW9mLXdpbmRvd3Mtb3BlcmF0aW5nLXN5c3RlbS1hbS1pLXJ1bm5pbmctNjI4YmVjOTktNDc2YS0yYzEzLTUyOTYtOWRkMDgxY2RkODA4&amp;ntb=1\" h=\"ID=SERP,6171.1\"><div class=\"b_fpl_cntr\"><div class=\"b_fpl_icon\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-alt=\"Global web icon\" data-role=\"img\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.10316189-64ed-44e8-98b3-c284bd7675fe&amp;w=16&amp;h=16&amp;o=6&amp;pid=1.2\"></div></div></div><div class=\"b_fpl_attr\"><div class=\"b_title\">Which version of <strong>Windows</strong> operating system am I running?</div></div></div></a></div><div class=\"pagereco_TDomain\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d28cf3cb5e564ae9JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE3MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aGljaC12ZXJzaW9uLW9mLXdpbmRvd3Mtb3BlcmF0aW5nLXN5c3RlbS1hbS1pLXJ1bm5pbmctNjI4YmVjOTktNDc2YS0yYzEzLTUyOTYtOWRkMDgxY2RkODA4&amp;ntb=1\" h=\"ID=SERP,6171.2\"><div class=\"b_attr\"><cite>support.microsoft.com</cite></div></a></div></div><div class=\"pagereco_TRow  \"><div class=\"pagereco_TTitle\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=366215607634eb13JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhld2luZG93c2NsdWIuY29tL2hpc3Rvcnktb2Ytd2luZG93cw&amp;ntb=1\" h=\"ID=SERP,6172.1\"><div class=\"b_fpl_cntr\"><div class=\"b_fpl_icon\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-alt=\"Global web icon\" data-role=\"img\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.458ffb01-e700-44af-a22e-305b47900da4&amp;w=16&amp;h=16&amp;o=6&amp;pid=1.2\"></div></div></div><div class=\"b_fpl_attr\"><div class=\"b_title\">A History of Microsoft Windows - Timeline</div></div></div></a></div><div class=\"pagereco_TDomain\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=366215607634eb13JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhld2luZG93c2NsdWIuY29tL2hpc3Rvcnktb2Ytd2luZG93cw&amp;ntb=1\" h=\"ID=SERP,6172.2\"><div class=\"b_attr\"><cite>thewindowsclub.com</cite></div></a></div></div></div><div class=\"recommendationsTableFeedback\"><div class=\"fbans\"><div class=\"b_footnote\"><a id=\"fdbkans_1\" class=\"hlig\" target=\"_blank\" data-fbhlsel=\".pageRecoContainer\" role=\"button\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=adfeacf491bd9180JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM5MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1amF2YXNjcmlwdDp2b2lkKDAp&amp;ntb=1\" h=\"ID=SERP,6390.1\">Recommended to you based on what's popular • Feedback</a></div></div></div></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1979d38d9826cdf8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTMyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,5327.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=93&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"3|5109|4731667066146717|kjhbetWvmJBntubjqqMfLtx0BMLiuCkP\" tabindex=\"0\"><cite>https://simple.wikipedia.org/wiki/Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5328.1\"></span></span></div></div></div></a></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1979d38d9826cdf8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTMyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,5327.2\">Microsoft - Simple English Wikipedia, the free encyclopedia</a></h2><div class=\"b_caption b_stsp2\" role=\"contentinfo\"><div class=\"b_richcard\"><div class=\"rc_herotabheader\"><div id=\"tabcontrol_15_EFC771\" class=\"tab-container\" data-wire=\"I;tab;; |B;a;;I|\" data-appns=\"SERP\" data-k=\"6184.2\"><div class=\"tab-head HeroTab\"><div class=\"tab-menu tab-flex\"><ul id=\"tabcontrol_15_EFC771_menu\" style=\"margin-left:0px;\" role=\"tablist\" data-dataurl=\"/richcardFetch?q=Microsoft+wikipedia&amp;Treatment=RCNewTemplate&amp;DataSourceType=OS&amp;Tabs={0}&amp;DataSource=OutboardDU&amp;DocURLHash=67B6E6E3AAA31F2EDC7404C2E2B8290F&amp;DocURL=https%3a%2f%2fsimple.wikipedia.org%2fwiki%2fMicrosoft&amp;TierName=webfluid\"><li data-dataurl=\"\"\n                            id=\"tab_12_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab tab-active tab-first\"\n                            style=\" flex:1 1 0px;\" data-w=\"65\" data-ow=\"97\" data-content=\"tab_12\"\n                            tabindex=\"0\" role=\"tab\"\n                            aria-controls=\"tab_12\"\n                            aria-selected=\"true\" data-appns=\"SERP\" data-k=\"6181.1\">Software</li><li data-dataurl=\"#1%2cServices\"\n                            id=\"tab_13_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" flex:1 1 0px;\" data-w=\"61\" data-ow=\"93\" data-content=\"tab_13\" role=\"tab\"\n                            aria-controls=\"tab_13\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6182.1\">Services</li><li data-dataurl=\"#2%2cHardware\"\n                            id=\"tab_14_head\" data-nc=\"\" data-nr=\"\"\n                            class=\"b_dmtab\"\n                            style=\" flex:1 1 0px;\" data-w=\"70\" data-ow=\"102\" data-content=\"tab_14\" role=\"tab\"\n                            aria-controls=\"tab_14\"\n                            aria-selected=\"false\" data-appns=\"SERP\" data-k=\"6183.1\">Hardware</li></ul></div></div><div class=\"tab-content\"><div id=\"tab_12\" data-appns=\"SERP\" data-k=\"6181.2\" role=\"tabpanel\" aria-labelledby=\"tab_12_head\" data-priority=\"\"><div id=\"rcdsc_expitem_-1399788056_11\"> <ol class=\"b_dList\"><li>Microsoft Windows is an operating system, which means that it is the basic software that makes people's computers work and lets other programs work. The majority of desktop and laptop computers run...</li><li><span title=\"Microsoft Office is an office suite. It lets people write documents on their computer with Microsoft Word, make charts and graphs with Microsoft Excel, make presentations with Microsoft PowerPoint,...\">Microsoft Office is an office suite. It lets people write documents on their computer with Microsoft Word, make charts and graphs with Microsoft Excel, make presentations with Micr…</span></li></ol></div><div class=\"b_hide\" data-exp=\"H;expitem_-1399788056_11;;rcdsc_expitem_-1399788056_11;;;\" data-exp-noani=\"\"> <ol class=\"b_dList\"><li>Microsoft Windows is an operating system, which means that it is the basic software that makes people's computers work and lets other programs work. The majority of desktop and laptop computers run...</li><li>Microsoft Office is an office suite. It lets people write documents on their computer with Microsoft Word, make charts and graphs with Microsoft Excel, make presentations with Microsoft PowerPoint,...</li><li>Internet Explorer is a piece of software that lets people look at things online (known as browsing) and download things from the Internet. In 2015, it was replaced by Microsoft Edge.</li><li><span title=\"Microsoft also makes other programs for the Internet. Many of them are called Windows Live services, with the name Windows Live put in front of the old name of the service, like Windows Live Hotmai...\">Microsoft also makes other programs for the Internet. Many of them are called Windows Live services, with the name Windows Live put in front of the old name of the service, like Window…</span></li></ol></div><div class=\"sml\" id=\"expitem_-1399788056_11\" data-appns=\"SERP\" data-k=\"6180.2\" data-expl=\"\"><a id=\"expitem_-1399788056_11_hit\"\n                   class=\"b_mopexpref\" data-exp=\"I;expitem_-1399788056_11;;0;;;Expansion;;0;1;expitem_-1399788056_11_hit;10;0;\"\n                   href=\"javascript:void(0);\" role=\"button\"\n                   aria-expanded=\"false\">See more<img role=\"presentation\" class=\"ciplr vam rms_img\" width=\"10\" height=\"7\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHBAMAAADDgsFQAAAAElBMVEX///8QINAQINAQINAQINAQINCEqDprAAAABXRSTlMAESIzZkG9BZgAAAAtSURBVAgdY3BVYGAOYQgNYjANZVANVQYymEJDQxUYgJwgBgYgB8hkYBBkYAAAjZEFp9arzeUAAAAASUVORK5CYII=\" /><div class=\"expansionAccessibilityText\" LessAltText=\"Less content will be shown above the current area of focus upon selection\" MoreAltText=\"New content will be added above the current area of focus upon selection\">New content will be added above the current area of focus upon selection</div></a></div><div class=\"b_hide\" data-exp=\"H;expitem_-1399788056_11;;;;;\" data-exp-noani=\"\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6c2eaf6bfc11a875JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE3OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,6179.1\">See more on simple.wikipedia.org</a></div></div><div id=\"tab_13\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6182.2\" role=\"tabpanel\" aria-labelledby=\"tab_13_head\" data-priority=\"2\"></div><div id=\"tab_14\" class=\"tab-hide\" data-appns=\"SERP\" data-k=\"6183.2\" role=\"tabpanel\" aria-labelledby=\"tab_14_head\" data-priority=\"2\"></div></div></div></div></div><div class=\"b_factrow b_twofr\"><div class=\"b_vlist2col\"><ul><li><div><span><strong>Type:</strong> </span><a title=\"Public\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ac9fc59063c47d01JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTMyMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPVB1YmxpYytjb21wYW55K3dpa2lwZWRpYSZGT1JNPUxGQUNUUkU&amp;ntb=1\" h=\"ID=SERP,5323.1\">Public</a></div></li></ul><ul><li><div><strong>ISIN:</strong> US5949181045</div></li></ul></div></div></div></li><li class=\"b_ans b_mop\" data-tag data-partnerTag data-id=\"\" h=\"SERP,6187.1\"><div class=\"b_sideBleed b_topBleed b_bottomBleed\"><div class=\"rqnaContainerwithfeedback df_alaskcarousel \" data-fbhlsel=\".rqnaContainerwithfeedback\"><div id=\"df_listaa\" class=\"\"><div></div><div class=\"b_vPanel\"><div><div class=\"df_hd\"><div class=\"b_traits b_primtxt\">People also ask</div></div></div><div><div id=\"relatedQnAListDisplay\" class=\"hybridAnsWrapper hybridAnsWrapper2 hybridHeightWrapper\" data-priority=\"\"><div class=\"openans_gradient_div\"></div><div id=\"slideexp0_F4EC09c\" class=\"b_slideexp\" data-partnerInfo=\"\" data-wire=\"I;slideexp_init;; |B;select;;I|F;selected;;O|F;active;;O|\" data-control-id=\"slideexp0_F4EC09\" data-appns=\"SERP\" data-k=\"6398.1\" data-stk=\"\"><div class=\"b_overlay\"><div id=\"slideexp0_F4EC09chevrons_prevbtn\" class=\"btn  disabled prev ltr rounded bld\" data-dir=\"\" role=\"button\"\n     aria-label=\"Click to scroll left\"\n     aria-hidden=\"true\"><div class=\"bg\"><span></span></div><div class=\"vcac\"><div style=\"height: 32px; margin-top: -16px;\"><div class=\"cr\"><div></div></div></div></div></div><div id=\"slideexp0_F4EC09chevrons_nextbtn\" class=\"btn  next ltr rounded bld\" data-dir=\"\" role=\"button\"\n     aria-label=\"Click to scroll right\"\n     aria-hidden=\"false\"><div class=\"bg\"><span></span></div><div class=\"vcac\"><div style=\"height: 32px; margin-top: -16px;\"><div class=\"cr\"><div></div></div></div></div></div><div class=\"b_slidesContainer\"><div class=\"b_viewport\"><div class=\"b_slidebar\" id=\"slideexp0_F4EC09\" role=\"list\" aria-label=\"Please use arrow keys to navigate\"><div class=\"slide\" data-dataurl=\"\" data-rinterval=\"\" data-appns=\"SERP\" data-k=\"6394.1\" data-mini=\"\"\n             role=\"listitem\"><div class=\"df_alsoAskCard \" data-tag=\"RelatedQnA.Item\" data-query=\"What is Microsoft's history?\" data-IID=\"SERP.6188\" data-ParentIID=\"SERP.6189\" data-algoreflink=\"\"><div class=\"df_qnacontent\"><div class=\"df_qntextwithsydonqn df_qntextwithsyd\" data-casingenabled=\"true\" data-tone=\"\" data-contextenabled=\"false\" data-querycontextenabled=\"false\" data-undqc=\"false\" data-unduc=\"true\" data-didec=\"true\" data-utcon=\"true\" data-ansinj=\"false\" data-lsscen=\"true\"><div class=\"df_dn_content\" data-sbtip=\"Ask Copilot\"  aria-label=\"Ask Copilot\"><span class=\"span_sydney\"><div class=\"rms_iac\" style=\"height:20px;line-height:20px;width:20px;\" data-class=\"alsoask_sydney_chat rms_img\" data-data-priority=\"2\" data-alt=\"Ask Copilot\" data-height=\"20\" data-width=\"20\" data-src=\"https://r.bing.com/rp/2Ro4LD_2OaiuqUlZYlpozEd7Bf0.svg\"></div></span></div><a class=\"df_dn_sydqncon\" data-sbtip=\"Ask Copilot\" href=\"javascript:void(0)\" h=\"ID=SERP,6400.1\"><div class=\"df_qntext df_qn_syd\">What is Microsoft's history?</div></a></div><span class=\"df_alsocon b_primtxt \" data-tag=\"RelatedQnA.ItemDetails\">Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800. It rose to dominate the personal computer operating system market with MS-DOS in the mid-1980s, followed by Windows.</span></div><div class=\"df_ansatb df_ansfontlghybrid \"><div class=\"qna_algo\"><div class=\"b_algo\"><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f55f26ed0851e233JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE5MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6191.1\">Microsoft - Wikipedia</a></h2></div><div class=\"b_attribution b_clearfix qfavc\"><div class=\"b_imagePair\"><div class=\"cico\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-role=\"presentation\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=16&amp;h=16&amp;c=7&amp;o=6&amp;pid=1.7\"></div></div><div><cite>en.wikipedia.org/wiki/Microsoft</cite></div></div></div></div></div></div></div><div class=\"slide\" data-dataurl=\"\" data-rinterval=\"\" data-appns=\"SERP\" data-k=\"6395.1\" data-mini=\"\"\n             role=\"listitem\"><div class=\"df_alsoAskCard \" data-tag=\"RelatedQnA.Item\" data-query=\"What are Microsoft's main products?\" data-IID=\"SERP.6193\" data-ParentIID=\"SERP.6194\" data-algoreflink=\"\"><div class=\"df_qnacontent\"><div class=\"df_qntextwithsydonqn df_qntextwithsyd\" data-casingenabled=\"true\" data-tone=\"\" data-contextenabled=\"false\" data-querycontextenabled=\"false\" data-undqc=\"false\" data-unduc=\"true\" data-didec=\"true\" data-utcon=\"true\" data-ansinj=\"false\" data-lsscen=\"true\"><div class=\"df_dn_content\" data-sbtip=\"Ask Copilot\"  aria-label=\"Ask Copilot\"><span class=\"span_sydney\"><div class=\"rms_iac\" style=\"height:20px;line-height:20px;width:20px;\" data-class=\"alsoask_sydney_chat rms_img\" data-data-priority=\"2\" data-alt=\"Ask Copilot\" data-height=\"20\" data-width=\"20\" data-src=\"https://r.bing.com/rp/2Ro4LD_2OaiuqUlZYlpozEd7Bf0.svg\"></div></span></div><a class=\"df_dn_sydqncon\" data-sbtip=\"Ask Copilot\" href=\"javascript:void(0)\" h=\"ID=SERP,6402.1\"><div class=\"df_qntext df_qn_syd\">What are Microsoft's main products?</div></a></div><span class=\"df_alsocon b_primtxt \" data-tag=\"RelatedQnA.ItemDetails\">Its best-known software products are the Windows line of operating systems, the Microsoft Office suite, and the Internet Explorer and Edge web browsers. Its flagship hardware products are the Xbox video game consoles and the Microsoft Surface lineup of touchscreen personal computers.</span></div><div class=\"df_ansatb df_ansfontlghybrid \"><div class=\"qna_algo\"><div class=\"b_algo\"><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=54e48c78eeb9c42dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjE5Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6196.1\">Microsoft - Wikipedia</a></h2></div><div class=\"b_attribution b_clearfix qfavc\"><div class=\"b_imagePair\"><div class=\"cico\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-role=\"presentation\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=16&amp;h=16&amp;c=7&amp;o=6&amp;pid=1.7\"></div></div><div><cite>en.wikipedia.org/wiki/Microsoft</cite></div></div></div></div></div></div></div><div class=\"slide\" data-dataurl=\"\" data-rinterval=\"\" data-appns=\"SERP\" data-k=\"6396.1\" data-mini=\"\"\n             role=\"listitem\"><div class=\"df_alsoAskCard \" data-tag=\"RelatedQnA.Item\" data-query=\"What services does Microsoft offer?\" data-IID=\"SERP.6198\" data-ParentIID=\"SERP.6199\" data-algoreflink=\"\"><div class=\"df_qnacontent\"><div class=\"df_qntextwithsydonqn df_qntextwithsyd\" data-casingenabled=\"true\" data-tone=\"\" data-contextenabled=\"false\" data-querycontextenabled=\"false\" data-undqc=\"false\" data-unduc=\"true\" data-didec=\"true\" data-utcon=\"true\" data-ansinj=\"false\" data-lsscen=\"true\"><div class=\"df_dn_content\" data-sbtip=\"Ask Copilot\"  aria-label=\"Ask Copilot\"><span class=\"span_sydney\"><div class=\"rms_iac\" style=\"height:20px;line-height:20px;width:20px;\" data-class=\"alsoask_sydney_chat rms_img\" data-data-priority=\"2\" data-alt=\"Ask Copilot\" data-height=\"20\" data-width=\"20\" data-src=\"https://r.bing.com/rp/2Ro4LD_2OaiuqUlZYlpozEd7Bf0.svg\"></div></span></div><a class=\"df_dn_sydqncon\" data-sbtip=\"Ask Copilot\" href=\"javascript:void(0)\" h=\"ID=SERP,6404.1\"><div class=\"df_qntext df_qn_syd\">What services does Microsoft offer?</div></a></div><span class=\"df_alsocon b_primtxt \" data-tag=\"RelatedQnA.ItemDetails\">Microsoft offers a variety of services, such as Azure, Bing, LinkedIn, Yammer, MSDN, Microsoft 365, OneDrive, Outlook.com, GitHub, TechNet, Pay, Microsoft Store, Windows Update, Xbox Game Pass and Xbox network. How to write a complaint about Microsoft?</span></div><div class=\"df_ansatb df_ansfontlghybrid \"><div class=\"qna_algo\"><div class=\"b_algo\"><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b5aa51ab9912497eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIwMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuY29tcGxhaW50c2JvYXJkLmNvbS9taWNyb3NvZnQtYjEwNzYyOC9jb250YWN0cw&amp;ntb=1\" h=\"ID=SERP,6201.1\">Microsoft Contact Number, Email, Support, Information</a></h2></div><div class=\"b_attribution b_clearfix qfavc\"><div class=\"b_imagePair\"><div class=\"cico\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-role=\"presentation\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.120b8d4f-5f40-450f-aff4-d8771437d3c1&amp;w=16&amp;h=16&amp;c=7&amp;o=6&amp;pid=1.7\"></div></div><div><cite>www.complaintsboard.com/microsoft-b107628/contacts</cite></div></div></div></div></div></div></div><div class=\"slide\" data-dataurl=\"\" data-rinterval=\"\" data-appns=\"SERP\" data-k=\"6397.1\" data-mini=\"\"\n             role=\"listitem\"><div class=\"df_alsoAskCard \" data-tag=\"RelatedQnA.Item\" data-query=\"What does Microsoft do?\" data-IID=\"SERP.6203\" data-ParentIID=\"SERP.6204\" data-algoreflink=\"\"><div class=\"df_qnacontent\"><div class=\"df_qntextwithsydonqn df_qntextwithsyd\" data-casingenabled=\"true\" data-tone=\"\" data-contextenabled=\"false\" data-querycontextenabled=\"false\" data-undqc=\"false\" data-unduc=\"true\" data-didec=\"true\" data-utcon=\"true\" data-ansinj=\"false\" data-lsscen=\"true\"><div class=\"df_dn_content\" data-sbtip=\"Ask Copilot\"  aria-label=\"Ask Copilot\"><span class=\"span_sydney\"><div class=\"rms_iac\" style=\"height:20px;line-height:20px;width:20px;\" data-class=\"alsoask_sydney_chat rms_img\" data-data-priority=\"2\" data-alt=\"Ask Copilot\" data-height=\"20\" data-width=\"20\" data-src=\"https://r.bing.com/rp/2Ro4LD_2OaiuqUlZYlpozEd7Bf0.svg\"></div></span></div><a class=\"df_dn_sydqncon\" data-sbtip=\"Ask Copilot\" href=\"javascript:void(0)\" h=\"ID=SERP,6406.1\"><div class=\"df_qntext df_qn_syd\">What does Microsoft do?</div></a></div><span class=\"df_alsocon b_primtxt \" data-tag=\"RelatedQnA.ItemDetails\">Microsoft Corporation is an American multinational technology company with headquarters in Redmond, Washington. It develops, manufactures, licenses, supports, and sells computer software, consumer electronics, personal computers, and related services.</span></div><div class=\"df_ansatb df_ansfontlghybrid \"><div class=\"qna_algo\"><div class=\"b_algo\"><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=96d44e59fbf49f44JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIwNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuZGVmaW5pdGlvbnMubmV0L2RlZmluaXRpb24vTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6206.1\">What does Microsoft mean? - definitions</a></h2></div><div class=\"b_attribution b_clearfix qfavc\"><div class=\"b_imagePair\"><div class=\"cico\" style=\"width:16px;height:16px;\"><div class=\"rms_iac\" style=\"height:16px;line-height:16px;width:16px;\" data-height=\"16\" data-width=\"16\" data-role=\"presentation\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.c1fa02cd-1d20-421d-b071-27fc7312cbd0&amp;w=16&amp;h=16&amp;c=7&amp;o=6&amp;pid=1.7\"></div></div><div><cite>www.definitions.net/definition/Microsoft</cite></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class=\"fbans\"><div class=\"b_footnote\"><a id=\"fdbkans_2\" class=\"hlig\" target=\"_blank\" data-fbhlsel=\".rqnaContainerwithfeedback\" role=\"button\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=fc55fd6ea24e559bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjQwNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1amF2YXNjcmlwdDp2b2lkKDAp&amp;ntb=1\" h=\"ID=SERP,6407.1\">Feedback</a></div></div></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7da7246a4559ed1aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM1Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9hYm91dA&amp;ntb=1\" h=\"ID=SERP,5357.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.dff3174d-c8cf-4132-8c42-90ebaa81f245&amp;w=32&amp;h=32&amp;qlt=94&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Microsoft</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"4|5110|4556071618547355|LgDZ84R2jVQX3Of2nndHvo_XN5oY-AYp\" tabindex=\"0\"><cite>https://www.microsoft.com/en-us/about</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5358.1\"></span></span></div></div></div></a><div class=\"scs_exp b_floatrt\" data-priority=\"2\"><a class=\"scs_icn b_hide\" tabindex=\"-1\" aria-label=\"Additional Results\" href=\"javascript:void(0)\" h=\"ID=SERP,6408.1\"><span class=\"scs_cls b_hide\" tabindex=\"0\" title=\"Close\" aria-label=\"Show less\" role=\"button\" aria-expanded=\"true\"></span><span class=\"scs_arw\" tabindex=\"0\" title=\"Explore this page\" aria-label=\"Show more\" role=\"button\" aria-expanded=\"false\"></span></a><div data-priority=\"2\" data-sc-metadata=\"{&quot;entity&quot;:&quot;Microsoft&quot;,&quot;scenarios&quot;:&quot;12,13&quot;,&quot;url&quot;:&quot;https://www.microsoft.com/en-us/about&quot;,&quot;agi5qv&quot;:&quot;agi5qv14292586087674989768&quot;}\" data-sc-iid=\"SERP.6409\" class=\"scs_c b_hide cnt_vis_hid scs_load\"></div></div></div><div class=\"b_imgcap_altitle b_imgcap_nosc\"><div class=\"b_imagePair square_mp reverse\"><div class=\"inner\"><div><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-data-priority=\"2\" data-height=\"80\" data-width=\"80\" data-class=\"b_circleImage b_ci_image_overlay b_onfaimg  rms_img\" data-fdopt=\"False\" data-data-overlaylink=\"/images/search?view=detailV2&amp;ccid=R1gVj5GO&amp;id=61A2D9F98CA7047A27F3D3D4A7FE03EC4080B5FF&amp;thid=OIP.R1gVj5GOlX7mVfN2nz5jFAAAAA&amp;mediaurl=http://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE1LH1c?ver=b246&amp;exph=266&amp;expw=474&amp;q=Microsoft+wikipedia&amp;ck=FF45C6DD0EB4C96BB16797584793E238&amp;idpp=rc&amp;idpview=singleimage&amp;form=rc2idp\" data-aria-hidden=\"true\" data-title=\"Explore this image\" data-src=\"/th?id=OIP.R1gVj5GOlX7mVfN2nz5jFAAAAA&amp;w=80&amp;h=80&amp;c=1&amp;vt=10&amp;bgcl=c7f315&amp;r=0&amp;o=6&amp;pid=5.1\"></div><div class=\"b_greyBackgroundModal\"></div></div></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7da7246a4559ed1aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM1Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9hYm91dA&amp;ntb=1\" h=\"ID=SERP,5357.2\">About Microsoft | Mission and Vision | Microsoft</a></h2><p class=\"b_lineclamp3 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span>Our mission is to empower every person and every organization on the planet to achieve more. Learn more about our company, who we are and what we value.</p></div></div><div class=\"b_caption b_rich\" role=\"contentinfo\"></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7da7246a4559ed1aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM1Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9hYm91dA&amp;ntb=1\" h=\"ID=SERP,5357.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Company Information</div><div class=\"tltg \">Microsoft Vision Mission Values</div><div class=\"tltg \">Mission And Vision</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a68dfb7743c48c29JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM4Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZWxpbmVfb2ZfTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5383.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=95&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"5|5265|4963114263515961|fYoOxZCz99jQ9vadHyNRmXQns09S5aZv\" tabindex=\"0\"><cite>https://en.wikipedia.org/wiki/Timeline_of_Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5384.1\"></span></span></div></div></div></a></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a68dfb7743c48c29JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM4Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZWxpbmVfb2ZfTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5383.2\">Timeline of Microsoft - Wikipedia</a></h2><div class=\"b_caption\" role=\"contentinfo\"><p class=\"b_lineclamp2 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><strong>Microsoft</strong> launches the first version of its Windows operating system, Windows 1.0, which runs on top of MS-DOS and had a primitive GUI. 1986: February: Company: <strong>Microsoft</strong> …</p></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a68dfb7743c48c29JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTM4Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZWxpbmVfb2ZfTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,5383.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Bill Gates</div><div class=\"tltg \">Ms-Dos</div><div class=\"tltg \">Apple</div><div class=\"tltg \">Microsoft Excel</div><div class=\"tltg \">Timeline Of Microsoft</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1fc78a7b39d73d7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQxNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuYnJpdGFubmljYS5jb20vdG9waWMvTWljcm9zb2Z0LUNvcnBvcmF0aW9u&amp;ntb=1\" h=\"ID=SERP,5417.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.a164b389-5a19-42ca-a711-7399e2b82798&amp;w=32&amp;h=32&amp;qlt=96&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Britannica</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"6|5112|4988433090223642|5MvApir537fcehXDHoarve2D8ImDF3xN\" tabindex=\"0\"><cite>https://www.britannica.com/topic/Micr…</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5418.1\"></span></span></div></div></div></a></div><div class=\"b_imgcap_altitle b_imgcap_nosc\"><div class=\"b_imagePair square_mp reverse\"><div class=\"inner\"><div><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-data-priority=\"2\" data-height=\"80\" data-width=\"80\" data-class=\"b_circleImage b_ci_image_overlay b_onfaimg  rms_img\" data-fdopt=\"False\" data-data-overlaylink=\"/images/search?view=detailV2&amp;ccid=lptJB6ty&amp;id=2DA03DF9471D48BCDD88DE8F6A4E9949F987BA0E&amp;thid=OIP.lptJB6tyH4pMqmXZ2wy6ngAAAA&amp;mediaurl=https://cdn.britannica.com/71/103171-050-BD1B685A/Bill-Gates-Microsoft-Corporation-operating-system-press-2001.jpg&amp;exph=320&amp;expw=474&amp;q=Microsoft+wikipedia&amp;ck=90430A8797D46340266FF24A5731C18A&amp;idpp=rc&amp;idpview=singleimage&amp;form=rc2idp\" data-aria-hidden=\"true\" data-title=\"Explore this image\" data-src=\"/th?id=OIP.lptJB6tyH4pMqmXZ2wy6ngAAAA&amp;w=80&amp;h=80&amp;c=1&amp;vt=10&amp;bgcl=86a4d3&amp;r=0&amp;o=6&amp;pid=5.1\"></div><div class=\"b_greyBackgroundModal\"></div></div></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1fc78a7b39d73d7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQxNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuYnJpdGFubmljYS5jb20vdG9waWMvTWljcm9zb2Z0LUNvcnBvcmF0aW9u&amp;ntb=1\" h=\"ID=SERP,5417.2\">Microsoft Corporation | History, Products, &amp; Facts</a></h2><p class=\"b_lineclamp3 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><span class=\"news_dt\">2 days ago</span>&nbsp;&#0183;&#32;<strong>Microsoft</strong> Corporation is a leading developer of computer software, operating systems, cloud computing, and artificial intelligence applications. The company also produces its own line of hybrid tablet …</p></div></div><div class=\"b_caption b_rich\" role=\"contentinfo\"></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1fc78a7b39d73d7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQxNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuYnJpdGFubmljYS5jb20vdG9waWMvTWljcm9zb2Z0LUNvcnBvcmF0aW9u&amp;ntb=1\" h=\"ID=SERP,5417.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Computing</div><div class=\"tltg \">Developer:Microsoft</div><div class=\"tltg \">Microsoft History</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d2e78d9f4b711794JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhvdWdodGNvLmNvbS9taWNyb3NvZnQtaGlzdG9yeS1vZi1hLWNvbXB1dGluZy1naWFudC0xOTkxMTQw&amp;ntb=1\" h=\"ID=SERP,5447.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.364701fa-8e2f-4a13-905b-ae391e4e2d66&amp;w=32&amp;h=32&amp;qlt=97&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">ThoughtCo</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"7|5267|4810372332663894|xEsuNfz92kuLgVLhD6s76k-1PgHvmDqh\" tabindex=\"0\"><cite>https://www.thoughtco.com/microsoft-…</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5448.1\"></span><span class=\"c_tlbxH\" H=\"BASE:GENERATIVECAPTIONSHINTSIGNAL\" K=\"SERP,5453.1\"></span></span></div></div></div></a></div><div class=\"b_imgcap_altitle b_imgcap_nosc\"><div class=\"b_imagePair square_mp reverse\"><div class=\"inner\"><div><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-data-priority=\"2\" data-height=\"80\" data-width=\"80\" data-class=\"b_circleImage b_ci_image_overlay b_onfaimg  rms_img\" data-fdopt=\"False\" data-data-overlaylink=\"/images/search?view=detailV2&amp;ccid=6n766Eaz&amp;id=6F3F1A8885A7938E0CA1FEA9C25582DC1DD85F49&amp;thid=OIP.6n766EazrrhXYHz1f6YZSAAAAA&amp;mediaurl=https://www.thoughtco.com/thmb/tuRZNsEQr2hEVU8i4BGvHh_jaI8=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/microsoft-sign-at-the-entrance-of-their-silicon-valley-campus-471179856-5c3d5d9a46e0fb00016dd455.jpg&amp;exph=316&amp;expw=474&amp;q=Microsoft+wikipedia&amp;ck=C92633B0872EC5B778373B35BE31D1E8&amp;idpp=rc&amp;idpview=singleimage&amp;form=rc2idp\" data-aria-hidden=\"true\" data-title=\"Explore this image\" data-src=\"/th?id=OIP.6n766EazrrhXYHz1f6YZSAAAAA&amp;w=80&amp;h=80&amp;c=1&amp;vt=10&amp;bgcl=4d8840&amp;r=0&amp;o=6&amp;pid=5.1\"></div><div class=\"b_greyBackgroundModal\"></div></div></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d2e78d9f4b711794JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhvdWdodGNvLmNvbS9taWNyb3NvZnQtaGlzdG9yeS1vZi1hLWNvbXB1dGluZy1naWFudC0xOTkxMTQw&amp;ntb=1\" h=\"ID=SERP,5447.2\">A Short History of Microsoft - ThoughtCo</a></h2><p class=\"b_lineclamp3 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><span class=\"news_dt\">Jan 10, 2020</span>&nbsp;&#0183;&#32;Learn how<strong> Microsoft</strong> was founded by two childhood friends and became a global leader in software and hardware. Explore the milestones of<strong> Microsoft</strong> products, from MS-DOS and Windows to Office …</p></div></div><div class=\"b_caption b_rich\" role=\"contentinfo\"></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d2e78d9f4b711794JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhvdWdodGNvLmNvbS9taWNyb3NvZnQtaGlzdG9yeS1vZi1hLWNvbXB1dGluZy1naWFudC0xOTkxMTQw&amp;ntb=1\" h=\"ID=SERP,5447.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Computing</div><div class=\"tltg \">Microsoft Corporation Founded</div><div class=\"tltg \">History Of Microsoft</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a7149d0949b2c952JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cud2lraXdhbmQuY29tL2VuL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,5472.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.71b43193-df4b-4254-8bd0-58e371997d5c&amp;w=32&amp;h=32&amp;qlt=98&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikiwand </div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"8|5114|4810819010888191|stS8gu2PneiLtRYgHOCaO6f2gBnj45D3\" tabindex=\"0\"><cite>https://www.wikiwand.com/en/Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5473.1\"></span></span></div></div></div></a></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a7149d0949b2c952JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cud2lraXdhbmQuY29tL2VuL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,5472.2\">Microsoft - Wikiwand</a></h2><div class=\"b_caption\" role=\"contentinfo\"><p class=\"b_lineclamp2 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><strong>Microsoft</strong> Corporation is an American multinational corporation and technology company headquartered in Redmond, Washington. <strong>Microsoft</strong>'s best-known software products are …</p></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a7149d0949b2c952JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ3Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cud2lraXdhbmQuY29tL2VuL01pY3Jvc29mdA&amp;ntb=1\" h=\"ID=SERP,5472.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Wikiwand Download</div><div class=\"tltg \">Wikis</div><div class=\"tltg \">Wikiwand Ios</div><div class=\"tltg \">Wikiwand For Microsoft Edge</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_algo\" data-id=\"\" ><div class=\"tpcn\"><a class=\"tilk\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1db8674f76c98bc0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ5Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3V0bGluZV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,5497.1\"><div class=\"tpic\"><div class=\"wr_fav\" data-priority=\"2\"><div class=\"cico siteicon\" style=\"width:32px;height:32px;\"><div class=\"rms_iac\" style=\"height:32px;line-height:32px;width:32px;\" data-height=\"32\" data-width=\"32\" data-alt=\"Global web icon\" data-class=\"rms_img\" data-src=\"/th?id=ODLS.9d837793-b21b-4809-aceb-f60f4a0b6408&amp;w=32&amp;h=32&amp;qlt=99&amp;pcl=fffffa&amp;o=6&amp;pid=1.2\"></div></div></div></div><div class=\"tptxt\"><div class=\"tptt\">Wikipedia</div><div class=\"tpmeta\"><div class=\"b_attribution\" u=\"9|5269|4817304411184633|SgLCfVXTNmOOqBSj3aRdbhEzmDmktFtc\" tabindex=\"0\"><cite>https://en.wikipedia.org/wiki/Outline_of_Microsoft</cite><span class=\"c_tlbxTrg\"><span class=\"c_tlbxH\" H=\"BASE:CACHEDPAGEDEFAULT\" K=\"SERP,5498.1\"></span></span></div></div></div></a></div><h2><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1db8674f76c98bc0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ5Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3V0bGluZV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,5497.2\">Outline of Microsoft - Wikipedia</a></h2><div class=\"b_caption\" role=\"contentinfo\"><p class=\"b_lineclamp2 b_algoSlug\"><span class=\"algoSlug_icon\" data-priority=\"2\">WEB</span><strong>Microsoft</strong> Corporation is a multinational corporation based in Redmond, Washington, USA and founded by Bill Gates and Paul Allen that develops, manufactures, licenses, and …</p></div><div rpPositionName=\"rpPositionName\"><div class=\"batg\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1db8674f76c98bc0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTQ5Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3V0bGluZV9vZl9NaWNyb3NvZnQ&amp;ntb=1\" h=\"ID=SERP,5497.3\"><div class=\"tltg \">Tags:</div><div class=\"tltg \">Computing</div><div class=\"tltg \">Bill Gates</div><div class=\"tltg \">Paul Allen</div><div class=\"tltg \">Microsoft Corporation Founded</div><div class=\"tltg \">Dubai</div></a></div><div class=\"bats\"></div></div></li><li class=\"b_ans\" data-tag data-partnerTag data-id=\"\" h=\"SERP,6234.1\" ><div class=\"wpt_bc_container b_hide\" data-priority=\"2\"></div><div elementtiming=frp.BottomOfPage style=\"pointer-events:none;margin-top:-1px;height:1px;width:1px;font-size:1px;position:absolute;top:0;right:0;\" tabindex=\"-1\"> &nbsp; </div></li><li class=\"b_ans\" data-tag data-partnerTag data-id=\"\" h=\"SERP,6235.1\" ><div id=\"relatedSearchesLGWContainer\" data-priority=\"2\"><div id=\"rs_lgw_list\"><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e349181eef5080b7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI1Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPWlzK3dpa2lwZWRpYStvd25lZCtieSttaWNyb3NvZnQmRk9STT1MR1dRUzE&amp;ntb=1\" h=\"ID=SERP,6252.1\"><div class=\"animation-padding\"></div><div class=\"rs_lgw_icon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>is</strong> wikipedia <strong>owned by</strong> microsoft</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=cc0af2721276060aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI1NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdoYXQraXMrb3duZWQrYnkrbWljcm9zb2Z0JkZPUk09TEdXUVMy&amp;ntb=1\" h=\"ID=SERP,6254.1\"><div class=\"animation-padding\"></div><div class=\"rs_lgw_icon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>what is owned by</strong> microsoft</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=528ab32b3a41259fJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI1Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCt3YXMrZm91bmRlZCtieStiaWxsK2dhdGVzK3doYXQreWVhciZGT1JNPUxHV1FTMw&amp;ntb=1\" h=\"ID=SERP,6256.1\"><div class=\"animation-padding\"></div><div class=\"rs_lgw_icon  sug_sprite\"></div><div class=\"b_suggestionText\">microsoft <strong>was founded by bill gates what year</strong></div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b18048b0b02f84d9JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI1OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCtjb21wYW55K3dpa2lwZWRpYSZGT1JNPUxHV1FTNA&amp;ntb=1\" h=\"ID=SERP,6258.1\"><div class=\"animation-padding\"></div><div class=\"rs_lgw_icon  sug_sprite\"></div><div class=\"b_suggestionText\">microsoft <strong>company</strong> wikipedia</div></a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7957143d34c63c5fJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI2MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdobyt3YXMrbWljcm9zb2Z0K2ZvdW5kZWQrYnkmRk9STT1MR1dRUzU&amp;ntb=1\" h=\"ID=SERP,6260.1\"><div class=\"animation-padding\"></div><div class=\"rs_lgw_icon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>who was</strong> microsoft <strong>founded by</strong></div></a><a class=\"more-rs-btn\" href=\"#\"><div class=\"animation-padding\"></div><div class=\"more-rs-btn-icon  sug_sprite\"></div><div class=\"b_suggestionText\">More</div></a></div></div><div id=\"inline_rs\" data-priority=\"2\" class=\"b_hide\"><div class=\"rslist_head\"><span class=\"rslist_title b_strong\">People also search for</span><a role=\"button\" aria-label=\"Close\" onclick=\"qbrs_close()\" id=\"rscar_close\" /></div><div id=\"rs_root\"><div class=\"b_rich\"><div class=\"b_vlist2col\"><ul><li><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=865d655ae1f2d0e9JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIzNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPWlzK3dpa2lwZWRpYStvd25lZCtieSttaWNyb3NvZnQmRk9STT1RU1JFMQ&amp;ntb=1\" h=\"ID=SERP,6236.1\"><strong>is</strong> wikipedia <strong>owned by</strong> microsoft</a></li><li><a target=\"_blank\" title=\"microsoft was founded by bill gates what year\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7a1462c589586cccJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCt3YXMrZm91bmRlZCtieStiaWxsK2dhdGVzK3doYXQreWVhciZGT1JNPVFTUkUz&amp;ntb=1\" h=\"ID=SERP,6240.1\">microsoft <strong>was founded by bill gates wh</strong>…</a></li><li><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5f07ecde83e837d5JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdobyt3YXMrbWljcm9zb2Z0K2ZvdW5kZWQrYnkmRk9STT1RU1JFNQ&amp;ntb=1\" h=\"ID=SERP,6244.1\"><strong>who was</strong> microsoft <strong>founded by</strong></a></li></ul><ul><li><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b7a6a91a6385f0eeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIzOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdoYXQraXMrb3duZWQrYnkrbWljcm9zb2Z0JkZPUk09UVNSRTI&amp;ntb=1\" h=\"ID=SERP,6238.1\"><strong>what is owned by</strong> microsoft</a></li><li><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=cb81fb59ab5139e8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCtjb21wYW55K3dpa2lwZWRpYSZGT1JNPVFTUkU0&amp;ntb=1\" h=\"ID=SERP,6242.1\">microsoft <strong>company</strong> wikipedia</a></li><li><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=999d92408d433051JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCt3aWtpcGVkaWEraGlzdG9yeSZGT1JNPVFTUkU2&amp;ntb=1\" h=\"ID=SERP,6246.1\">microsoft wikipedia <strong>history</strong></a></li></ul></div></div></div></div><div class=\"b_rs\" id=\"brsv3\"><h2 class=\"\">Related searches for <strong>Microsoft wikipedia</strong></h2><ul class=\"b_vList b_divsec\"><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=865d655ae1f2d0e9JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIzNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPWlzK3dpa2lwZWRpYStvd25lZCtieSttaWNyb3NvZnQmRk9STT1RU1JFMQ&amp;ntb=1\" h=\"ID=SERP,6236.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>is</strong> wikipedia <strong>owned by</strong> microsoft</div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b7a6a91a6385f0eeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjIzOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdoYXQraXMrb3duZWQrYnkrbWljcm9zb2Z0JkZPUk09UVNSRTI&amp;ntb=1\" h=\"ID=SERP,6238.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>what is owned by</strong> microsoft</div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7a1462c589586cccJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCt3YXMrZm91bmRlZCtieStiaWxsK2dhdGVzK3doYXQreWVhciZGT1JNPVFTUkUz&amp;ntb=1\" h=\"ID=SERP,6240.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\">microsoft <strong>was founded by bill gates what year</strong></div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=cb81fb59ab5139e8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCtjb21wYW55K3dpa2lwZWRpYSZGT1JNPVFTUkU0&amp;ntb=1\" h=\"ID=SERP,6242.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\">microsoft <strong>company</strong> wikipedia</div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5f07ecde83e837d5JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPXdobyt3YXMrbWljcm9zb2Z0K2ZvdW5kZWQrYnkmRk9STT1RU1JFNQ&amp;ntb=1\" h=\"ID=SERP,6244.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>who was</strong> microsoft <strong>founded by</strong></div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=999d92408d433051JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPW1pY3Jvc29mdCt3aWtpcGVkaWEraGlzdG9yeSZGT1JNPVFTUkU2&amp;ntb=1\" h=\"ID=SERP,6246.2\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\">microsoft wikipedia <strong>history</strong></div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0a56632c235cfad3JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI0OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPWRvZXMrbWljcm9zb2Z0K293bit3aWtpcGVkaWEmRk9STT1RU1JFNw&amp;ntb=1\" h=\"ID=SERP,6248.1\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\"><strong>does</strong> microsoft <strong>own</strong> wikipedia</div></a></li><li data-priority=><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f59d6e1ef99b3580JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI1MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9xPWxpc3Qrb2YrbWljcm9zb2Z0K3NvZnR3YXJlK3dpa2lwZWRpYSZGT1JNPVFTUkU4&amp;ntb=1\" h=\"ID=SERP,6250.1\"><div class=\"b_suggestionIcon  sug_sprite\"></div><div class=\"b_suggestionText\">list of microsoft software wikipedia</div></a></li></ul></div></li><li class=\"b_pag\"><nav role=\"navigation\" aria-label=\"More results for Microsoft wikipedia\"><h4 class=\"b_hide\">Pagination</h4><ul class=\"sb_pagF\"><li><a class=\"sb_pagS sb_pagS_bp b_widePag sb_bp sb_pag_first\">1</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 2\" href=\"/search?q=Microsoft+wikipedia&amp;FPIG=7DE503E4162940FA9A03BF17C440033D&amp;first=11&amp;FORM=PERE\" h=\"ID=SERP,6352.1\">2</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 3\" href=\"/search?q=Microsoft+wikipedia&amp;FPIG=7DE503E4162940FA9A03BF17C440033D&amp;first=21&amp;FORM=PERE1\" h=\"ID=SERP,6353.1\">3</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 4\" href=\"/search?q=Microsoft+wikipedia&amp;FPIG=7DE503E4162940FA9A03BF17C440033D&amp;first=31&amp;FORM=PERE2\" h=\"ID=SERP,6354.1\">4</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 5\" href=\"/search?q=Microsoft+wikipedia&amp;FPIG=7DE503E4162940FA9A03BF17C440033D&amp;first=41&amp;FORM=PERE3\" h=\"ID=SERP,6355.1\">5</a></li><li><a class=\"sb_pagN sb_pagN_bp b_widePag sb_bp \" title=\"Next page\" href=\"/search?q=Microsoft+wikipedia&amp;FPIG=7DE503E4162940FA9A03BF17C440033D&amp;first=11&amp;FORM=PORE\" h=\"ID=SERP,6356.1\"><div class=\"sw_next\">Next</div></a></li></ul></nav><div id=\"b_pag_chat_btn_container\" data-text=\"Chat\"></div></li><li id=\"mfa_root\" class=\"b_fabHide fabcolapse\" data-priority=\"2\"><div class=\"b_ds5\"><a role=\"button\" class=\"mfa_btn\" id=\"mfa_srch\" aria-label=\"Search more\" href=\"javascript:void(0);\" h=\"ID=SERP,6364.1\"><div class=\"fba_sbicn\" style=\"width: 40px; height: 40px;\"></div></a></div></li></ol></main><aside aria-label=\"Additional Results\"><div id=\"b_mtp\" class=\"crhide\" data-priority=\"2\"><a class=\"mtprt\" href=\"javascript: void(0);\" h=\"ID=SERP,6411.1\"><img class=\"mtpsvg mtparr rms_img\" height=\"40\" width=\"40\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2040%2040%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3ClinearGradient%20id%3D%22a%22%20gradientUnits%3D%22userSpaceOnUse%22%20x1%3D%220%22%20x2%3D%2240%22%20y1%3D%2220%22%20y2%3D%2220%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%232556e4%22%20%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%233cbef6%22%20%2F%3E%3C%2FlinearGradient%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2220%22%20fill%3D%22url%28%23a%29%22%20r%3D%2220%22%20%2F%3E%3Cpath%20d%3D%22m23.293%2010.293-9%209c-.391.391-.391%201.024%200%201.414l9%209c.391.391%201.024.391%201.414%200%20.391-.391.391-1.024%200-1.414l-8.293-8.293%208.293-8.293c.391-.391.391-1.024%200-1.414-.39-.391-1.024-.391-1.414%200z%22%20fill%3D%22%23fff%22%20%2F%3E%3C%2Fsvg%3E\" /><div class=\"mtpseem\">See more</div></a></div><ol id=\"b_context\" class=\"crinvis\"><li class=\"b_ans\" data-tag data-partnerTag data-id=\"\" h=\"SERP,6281.1\" ><div class=\"utilAns\"><div><div class=\"b_hide kc_v2\"\n     id=\"satoriId\">a093e9b9-90f5-a3d5-c4b8-5855e1b01f85</div><div class=\"b_sideBleed lite-entcard-ans\"><div class=\"lite-entcard-main lite-entcard_a093e\"><div class=\"lite-entcard-blk l_ecrd_bkg_bdrls\"\n     id=\"l_ecrd_blk_1_PlainHero\"><div class=\"l_ecrd_hero\"><div class=\"l_ecrd_rel\"\n     style=\"margin-top:-6.3559322033898304%;\"><div class=\"cico res55177943 \"><a title=\"All images\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c2dc1b4f2c0e7d69JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L2ltYWdlcy9zZWFyY2g_cT1taWNyb3NvZnQmY2JuPUtub3dsZWRnZUNhcmQmc3RpZD1hMDkzZTliOS05MGY1LWEzZDUtYzRiOC01ODU1ZTFiMDFmODUmRk9STT1LQ0hJTU0&amp;ntb=1\" h=\"ID=SERP,6283.1\"><img class=\"bsimg rms_img\" data-src-hq=\"/th?id=OSK.HEROjJ0iuHdQVcgeZ4OzCB_AkbXOF56VWYJo9ApstSir3ls&amp;w=472&amp;h=280&amp;c=13&amp;rs=2&amp;o=6&amp;oif=webp&amp;pid=SANGAM\" alt=\"All images\" data-priority=\"2\" id=\"emb409E2F855\" src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7\" /></a></div><div class=\"l_ecrd_hero_txt l_ecrd_hero_txtmsk l_ecrd_hero_txt_bottom\"><div class=\"l_ecrd_hero_ttl\"><div><a class=\" l_ecrd_txt_lnk b_ignbt l_ecrd_txt_hover\" Title=\"bing.com\" target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=91f1c26a7177a653JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9iaW5nLmNvbS9hbGluay9saW5rP3VybD1odHRwcyUzYSUyZiUyZnd3dy5taWNyb3NvZnQuY29tJTJmZW4tdXMlMmYmc291cmNlPXNlcnAtcnImaD0xbkRRZ0Z4S2JRR1poQm94ZVZicEx1cmh0N1o3TERKdXRTWW13Q2ZkbkxzJTNkJnA9a2NvZmZjaWFsd2Vic2l0ZQ&amp;ntb=1\" h=\"ID=SERP,6284.1\"><h2 class=\"\"><span class=\"l_ecrd_txt_herol l_ecrd_txt_nound\">Microsoft</span></h2></a></div></div><div class=\"l_ecrd_hero_subttl\"><div><span><div><span class=\"l_ecrd_txt_pln\">American technology company</span></div></span></div></div></div><a Title=\"All images\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=882e1be16a8b56e7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4NQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L2ltYWdlcy9zZWFyY2g_cT1taWNyb3NvZnQmY2JuPUtub3dsZWRnZUNhcmQmc3RpZD1hMDkzZTliOS05MGY1LWEzZDUtYzRiOC01ODU1ZTFiMDFmODUmZGlzb3ZlcmxheT0xJkZPUk09SUFSUlNN&amp;ntb=1\" h=\"ID=SERP,6285.1\"><div class=\"l_ecrd_hero_smi\"\n     style=\"bottom:8px;\"><svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    height=\"12\"\n    width=\"12\"\n    viewBox=\"0 0 16 16\"><path\n    d=\"m12 10v-8c0-1.105-.896-2-2-2h-8c-1.104 0-2 .895-2 2v8c0 1.105.896 2 2 2h8c1.104 0 2-.895 2-2zm-2-8v5l-.609.762-.61.762c-.2.25-.49.375-.781.375s-.581-.125-.781-.376l-1.232-1.54-1.232-1.54c-.196-.245-.48-.371-.765-.376s-.572.111-.776.35l-1.107 1.291-.107.125v-4.833zm-2 3c.276 0 .526-.112.707-.293s.293-.431.293-.707-.112-.526-.293-.707-.431-.293-.707-.293-.526.112-.707.293-.293.431-.293.707.112.526.293.707.431.293.707.293zm7-1c-.552 0-1 .448-1 1v8c-.001.552-.448.999-1 1h-8c-.552 0-1 .448-1 1s.448 1 1 1h8c1.657-.001 2.999-1.343 3-3v-8c0-.552-.448-1-1-1z\"\n    fill=\"#FFF\" /></svg><div class=\"l_ecrd_hero_smi_txt\">All images</div></div></a></div><div class=\"l_ecrd_webicons\"><div><a title=\"Wikipedia\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ac6f2c75f379e1fdJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6286.1\"><div class=\"sp-tpwebicons WIKI\"><svg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"40\" height=\"40\" fill=\"white\"/><path fill-rule=\"evenodd\" d=\"M37.766 9.128c0 .128-.041.244-.119.35s-.166.156-.263.156c-.778.075-1.419.325-1.913.753s-1.006 1.241-1.534 2.441l-8.062 18.169c-.053.169-.2.253-.444.253-.191 0-.338-.084-.444-.253l-4.522-9.456-5.2 9.456c-.106.169-.253.253-.444.253-.231 0-.384-.084-.459-.253L6.441 12.828c-.494-1.128-1.016-1.916-1.566-2.362s-1.312-.725-2.291-.831c-.084 0-.166-.044-.237-.134a.46.46 0 0 1-.113-.306c0-.297.084-.444.253-.444l2.216.094 2.022.097 2.278-.097 2.434-.094c.169 0 .253.147.253.444s-.053.441-.156.441c-.706.053-1.262.234-1.669.538s-.609.706-.609 1.203c0 .253.084.569.253.947l6.547 14.784 3.716-7.019-3.462-7.259c-.622-1.294-1.134-2.131-1.534-2.506s-1.006-.603-1.819-.688c-.075 0-.144-.044-.213-.134s-.103-.191-.103-.306c0-.297.072-.444.222-.444l1.944.094c.569.066 1.175.097 1.819.097l2.006-.097 2.15-.094c.169 0 .253.147.253.444s-.05.441-.156.441c-1.413.097-2.119.497-2.119 1.203 0 .316.163.806.491 1.469l2.291 4.65 2.278-4.253c.316-.6.475-1.106.475-1.519 0-.969-.706-1.484-2.119-1.55-.128 0-.191-.147-.191-.441a.53.53 0 0 1 .094-.3c.066-.097.128-.144.191-.144.506 0 1.128.031 1.866.094l1.741.097c.325 0 .806-.028 1.438-.081l2.009-.109c.125 0 .188.125.188.378 0 .338-.116.506-.347.506-.822.084-1.484.313-1.984.681s-1.125 1.206-1.872 2.512l-3.038 5.616 4.113 8.378 6.072-14.119c.209-.516.316-.991.316-1.422 0-1.034-.706-1.581-2.119-1.647-.128 0-.191-.147-.191-.441s.094-.444.284-.444c.516 0 1.128.031 1.834.094l1.644.097c.466 0 1.003-.031 1.613-.097l1.709-.094c.147 0 .222.125.222.378z\" fill=\"#000\"/></svg></div></a></div><div><a title=\"LinkedIn\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=11d90a116c8f9a82JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvbWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6287.1\"><div class=\"sp-tpwebicons LNKD\"><svg viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"#2A67BC\" d=\"M0 0h20v20H0z\"/><path d=\"M6.894 14.99H4.56V7.489h2.334v7.5zM5.727 6.464a1.351 1.351 0 11-.002-2.702 1.351 1.351 0 01.003 2.702zm9.898 8.526h-2.331v-3.648c0-.87-.015-1.989-1.211-1.989-1.214 0-1.399.948-1.399 1.927v3.71H8.357V7.489h2.235v1.025h.032c.31-.59 1.07-1.211 2.205-1.211 2.36 0 2.797 1.553 2.797 3.573v4.114z\" fill=\"#fff\"/></svg></div></a></div><div><a title=\"YouTube\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e4bdbf632a0199f4JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ0Z0RUV2ODBmUVZLa0Q0aDFQRi1YcXc&amp;ntb=1\" h=\"ID=SERP,6288.1\"><div class=\"sp-tpwebicons YOUT\"><svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"20\" height=\"20\" fill=\"white\"/><path d=\"M16.848 6.244a1.79 1.79 0 00-1.259-1.26C14.471 4.68 10 4.68 10 4.68s-4.47 0-5.589.294c-.6.165-1.094.659-1.259 1.27-.294 1.119-.294 3.437-.294 3.437s0 2.33.294 3.436a1.79 1.79 0 001.26 1.259C5.54 14.68 10 14.68 10 14.68s4.471 0 5.59-.294a1.79 1.79 0 001.258-1.26c.295-1.117.295-3.435.295-3.435s.011-2.33-.295-3.448z\" fill=\"red\"/><path d=\"M12.294 9.68L8.576 7.538v4.283l3.718-2.141z\" fill=\"#fff\"/></svg></div></a></div><div><a title=\"Facebook\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=305e6bd86e6e8ae5JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI4OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL01pY3Jvc29mdC8&amp;ntb=1\" h=\"ID=SERP,6289.1\"><div class=\"sp-tpwebicons FACE\"><svg viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20 10c0-5.523-4.477-10-10-10S0 4.477 0 10c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V10h2.54V7.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V10h2.773l-.443 2.89h-2.33v6.988C16.343 19.128 20 14.991 20 10z\" fill=\"#1877F2\"/><path d=\"M13.893 12.89l.443-2.89h-2.774V8.124c0-.79.388-1.562 1.63-1.562h1.261v-2.46s-1.144-.196-2.238-.196c-2.285 0-3.777 1.385-3.777 3.89V10h-2.54v2.89h2.54v6.988a10.073 10.073 0 003.124 0v-6.987h2.33z\" fill=\"#fff\"/></svg></div></a></div><div><a title=\"Instagram\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=87fa0937712054abJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9taWNyb3NvZnQv&amp;ntb=1\" h=\"ID=SERP,6290.1\"><div class=\"sp-tpwebicons INST\"><svg viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"none\" xmlns:v=\"https://vecta.io/nano\"><use xlink:href=\"#C\" fill=\"url(#A)\"/><use xlink:href=\"#C\" fill=\"url(#B)\"/><path d=\"M20 5.454l-5.997.088c-1.548.071-2.605.316-3.53.676a7.12 7.12 0 0 0-2.577 1.677 7.14 7.14 0 0 0-1.679 2.576c-.361.925-.606 1.983-.676 3.53L5.454 20l.088 5.996c.071 1.549.316 2.605.676 3.53.372.957.869 1.768 1.678 2.577a7.12 7.12 0 0 0 2.576 1.679c.925.36 1.983.605 3.531.676l5.997.088 5.996-.088c1.548-.071 2.607-.316 3.532-.676.956-.371 1.767-.87 2.575-1.679a7.14 7.14 0 0 0 1.679-2.576c.358-.925.603-1.982.676-3.53L34.544 20l-.088-5.998c-.073-1.548-.318-2.605-.676-3.53a7.14 7.14 0 0 0-1.679-2.577 7.11 7.11 0 0 0-2.576-1.677c-.927-.36-1.985-.605-3.533-.676l-5.997-.088H20zm-1.305 2.621H20l5.877.084c1.418.065 2.188.302 2.7.501.679.264 1.163.579 1.672 1.088s.824.994 1.088 1.673c.199.512.436 1.282.501 2.7l.085 5.876-.085 5.876c-.065 1.418-.302 2.188-.501 2.7-.264.679-.579 1.162-1.088 1.671s-.992.824-1.672 1.088c-.512.2-1.282.436-2.7.501L20 31.917c-3.884 0-4.344-.015-5.877-.085-1.418-.065-2.188-.302-2.701-.502-.679-.264-1.164-.579-1.673-1.088s-.824-.993-1.088-1.672c-.199-.512-.436-1.282-.501-2.7l-.084-5.878.084-5.876c.065-1.418.302-2.188.501-2.701.264-.679.579-1.164 1.088-1.673a4.51 4.51 0 0 1 1.673-1.088c.513-.2 1.283-.436 2.701-.502l4.573-.082v.004zm9.069 2.415c-.964 0-1.745.781-1.745 1.745s.782 1.745 1.745 1.745 1.745-.782 1.745-1.745-.782-1.745-1.745-1.745v.001zM20 12.53A7.47 7.47 0 0 0 12.531 20 7.47 7.47 0 0 0 20 27.468 7.47 7.47 0 0 0 27.469 20 7.47 7.47 0 0 0 20 12.53h0zm0 2.621A4.85 4.85 0 0 1 24.849 20 4.85 4.85 0 0 1 20 24.848 4.85 4.85 0 0 1 15.152 20 4.85 4.85 0 0 1 20 15.151h0z\" fill=\"#fff\"/><defs><radialGradient id=\"A\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(10.7689 42.7275) rotate(-90) scale(39.039 36.3181)\"><stop stop-color=\"#fd5\"/><stop offset=\".1\" stop-color=\"#fd5\"/><stop offset=\".5\" stop-color=\"#ff543e\"/><stop offset=\"1\" stop-color=\"#c837ab\"/></radialGradient><radialGradient id=\"B\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"matrix(3.425987453965266,17.111196060044215,-70.54872751991398,14.125199344820954,-6.29651,3.14061)\"><stop stop-color=\"#3771c8\"/><stop offset=\".128\" stop-color=\"#3771c8\"/><stop offset=\"1\" stop-color=\"#60f\" stop-opacity=\"0\"/></radialGradient><path id=\"C\" d=\"M20.01.303L8.912.35c-1.688.14-2.738.406-3.882.976-.882.438-1.577.945-2.264 1.657C1.516 4.281.759 5.877.485 7.774c-.133.921-.172 1.109-.18 5.815v6.402l.048 11.088c.136 1.643.394 2.676.939 3.806a8.3 8.3 0 0 0 5.379 4.394c.812.209 1.709.324 2.861.379.488.021 5.46.036 10.436.036l10.427-.03c1.333-.063 2.107-.167 2.964-.388a8.25 8.25 0 0 0 5.379-4.403c.535-1.103.806-2.176.929-3.732.027-.339.038-5.751.038-11.155L39.665 8.84c-.124-1.582-.395-2.645-.948-3.77-.453-.92-.956-1.608-1.686-2.31C35.727 1.515 34.134.758 32.234.484c-.92-.133-1.104-.172-5.812-.181H20.01z\"/></defs></svg></div></a></div><div><a title=\"Pinterest\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ff3bb562f1d11dfaJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cucGludGVyZXN0LmNvbS9taWNyb3NvZnQv&amp;ntb=1\" h=\"ID=SERP,6291.1\"><div class=\"sp-tpwebicons PINT\"><svg viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"#E60023\" d=\"M0 0h40v40H0z\"/><path d=\"M14.998 27.177c-.282 1.235.246 3.165.376 4.294.587-.952 1.987-2.33 2.304-3.576l.894-3.398c.459.893 1.823 1.646 3.269 1.646 4.303 0 7.407-3.963 7.407-8.889 0-4.727-3.857-8.254-8.806-8.254C14.269 9 11 13.139 11 17.642c0 2.105 1.117 4.703 2.904 5.538.27.13.424.07.482-.188.047-.2.294-1.176.4-1.623a.425.425 0 0 0-.094-.411c-.588-.718-1.058-2.034-1.058-3.257 0-3.151 2.387-6.197 6.455-6.197 3.515 0 5.973 2.387 5.973 5.809 0 3.856-1.952 6.537-4.492 6.537-1.399 0-2.457-1.164-2.116-2.587.411-1.705 1.187-3.539 1.187-4.762 0-1.093-.587-2.01-1.81-2.01-1.435 0-2.587 1.481-2.587 3.468 0 1.259.423 2.117.423 2.117s-1.41 5.985-1.67 7.101z\" fill=\"#fff\"/></svg></div></a></div></div></div></div><div class=\"lite-entcard-blk\"\n     id=\"l_ecrd_blk_2_PlainHero\"><div class=\"l_ecrd_a1\"><div><div><a class=\" l_ecrd_txt_lnk b_ignbt l_ecrd_txt_hover\" Title=\"en.wikipedia.org\" target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=1fd2d566a62e6224JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0&amp;ntb=1\" h=\"ID=SERP,6292.1\"><p><span class=\"l_ecrd_txt_pln\">Microsoft Corporation is an American multinational corporation and technology company headquartered in Redmond, Washington. Microsoft's best-known software products are the Windows line of operating systems, the Microsoft 365 suite of productivity applications, and the Edge web browser. Its flagship hardware products are the Xbox video game consoles and the Microsoft Surface lineup of touchscreen personal computers. Microsoft ranked No. 14 in the 2022 Fortune 500 rankings of the largest United States corporations by total revenue; and it was the world's largest software maker by revenue in 2022 according to Forbes Global 2000. It is considered one of the Big Five American information technology companies, alongside Alphabet, Amazon, Apple, and Meta.</span></p></a></div></div><div class=\"l_ecrd_a1_o fact\"><div class=\"l_ecrd_webicon_txtside\"><a title=\"Official Site\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c2354f418bbe3646JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9iaW5nLmNvbS9hbGluay9saW5rP3VybD1odHRwcyUzYSUyZiUyZnd3dy5taWNyb3NvZnQuY29tJTJmZW4tdXMlMmYmc291cmNlPXNlcnAtcnImaD0xbkRRZ0Z4S2JRR1poQm94ZVZicEx1cmh0N1o3TERKdXRTWW13Q2ZkbkxzJTNkJnA9a2NvZmZjaWFsd2Vic2l0ZQ&amp;ntb=1\" h=\"ID=SERP,6293.1\"><div class=\"sp-webicons20 SITE\"><svg class=\"sp-ofsite\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M12.667 1.511l-.248-.178a8 8 0 1 0-5.086 14.633c.22.019.442.034.667.034a7.994 7.994 0 0 0 4.667-14.489zm-11.067 6.489a6.364 6.364 0 0 1 .325-2h.075a3.216 3.216 0 0 0 .943 2.276l1.112 1.113v1.639a.973.973 0 0 0 .973.972.972.972 0 0 1 .972.972v1.1a6.41 6.41 0 0 1-4.4-6.072zm11.067 4.667v-.3a6.4 6.4 0 0 1-3.334 1.892v-4.259a1.333 1.333 0 0 0-1.333-1.333h-2.667a.666.666 0 0 1-.666-.667v-.657a.666.666 0 0 1 .666-.666h1a1 1 0 0 0 1-1v-.677a1 1 0 0 1 1-1 1 1 0 0 0 1-1v-1.258a6.434 6.434 0 0 1 4.12 2.925h-1.453a1.333 1.333 0 0 0-1.333 1.333v1.333a1.334 1.334 0 0 0 1.333 1.334.666.666 0 0 1 .666.666z\" /></svg></div></a><a class=\"l_ecrd_webicon_txt l_ecrd_thmtxt\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=4a16dff37a3de1ccJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9iaW5nLmNvbS9hbGluay9saW5rP3VybD1odHRwcyUzYSUyZiUyZnd3dy5taWNyb3NvZnQuY29tJTJmZW4tdXMlMmYmc291cmNlPXNlcnAtcnImaD0xbkRRZ0Z4S2JRR1poQm94ZVZicEx1cmh0N1o3TERKdXRTWW13Q2ZkbkxzJTNkJnA9a2NvZmZjaWFsd2Vic2l0ZQ&amp;ntb=1\" h=\"ID=SERP,6294.1\">microsoft.com</a></div></div></div></div><div class=\"lite-entcard-blk\"\n     id=\"l_ecrd_blk_3_AttrQuickFactsScaleup\"><div class=\"l_ecrd_vqfcts whitespace thin\"\n     id=\"vqfcts-269\"><div class=\"l_ecrd_vqfcts_row\"><div><a class=\"l_ecrd_vqfcts_ttl\" target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b7dd8fb7999b81afJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5NQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtzdG9jaytwcmljZSZmaWx0ZXJzPXNpZDoiYTA5M2U5YjktOTBmNS1hM2Q1LWM0YjgtNTg1NWUxYjAxZjg1Ig&amp;ntb=1\" h=\"ID=SERP,6295.1\">Stock price</a><span><a target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6acd955165836a20JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtzdG9jaytwcmljZSZmaWx0ZXJzPXNpZDoiYTA5M2U5YjktOTBmNS1hM2Q1LWM0YjgtNTg1NWUxYjAxZjg1Ig&amp;ntb=1\" h=\"ID=SERP,6296.1\"><span class=\"l_ecrd_vqfcts_lnk\">MSFT </span></a></span><span\n      class=\"l_ecrd_vqfcts_exch\">(NASDAQ) </span><span><a target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0dabc4d74fd77b9eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtzdG9jaytwcmljZSZmaWx0ZXJzPXNpZDoiYTA5M2U5YjktOTBmNS1hM2Q1LWM0YjgtNTg1NWUxYjAxZjg1Ig&amp;ntb=1\" h=\"ID=SERP,6297.1\"><span class=\"l_ecrd_vqfcts_lnk\">414.65 USD </span></a></span><span\n      class=\"l_ecrd_vqfcts_stock_down\"><svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    height=\"10\"\n    width=\"10\"\n    viewBox=\"0 0 15 15\"><path\n    d=\"m8.79 13.025 5.987-7.4c.265-.327.279-.734.122-1.058s-.488-.567-.912-.567h-11.974c-.424 0-.754.242-.911.567s-.143.73.122 1.058l5.987 7.4c.202.25.495.375.789.375s.587-.125.79-.375z\" /></svg></span><span\n      class=\"l_ecrd_vqfcts_stock_down\"> -10.57 (-2.49%)</span></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6d89b89287b09c09JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCt0cmFkZWQrYXMmZmlsdGVycz1zaWQ6ImEwOTNlOWI5LTkwZjUtYTNkNS1jNGI4LTU4NTVlMWIwMWY4NSI&amp;ntb=1\" h=\"ID=SERP,6298.1\">Traded as</a><a data-sid=\"0c3b7b2c-f40e-cba8-3bb6-29450420b38e\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7829bc23135e17e0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjI5OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU5hc2RhcSZmaWx0ZXJzPXNpZDoiMGMzYjdiMmMtZjQwZS1jYmE4LTNiYjYtMjk0NTA0MjBiMzhlIg&amp;ntb=1\" h=\"ID=SERP,6299.1\">Nasdaq</a><span>: </span><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=49425a7ef5de591bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwMA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubmFzZGFxLmNvbS9tYXJrZXQtYWN0aXZpdHkvc3RvY2tzL21zZnQ&amp;ntb=1\" h=\"ID=SERP,6300.1\">MSFT</a><span> &#183; </span><a data-sid=\"2a3a524a-a784-e9ea-8ddf-0fa4fd848232\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=3af5a477ce670683JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU5hc2RhcS0xMDAmZmlsdGVycz1zaWQ6IjJhM2E1MjRhLWE3ODQtZTllYS04ZGRmLTBmYTRmZDg0ODIzMiI&amp;ntb=1\" h=\"ID=SERP,6301.1\">Nasdaq-100</a><span> component</span><span> &#183; </span><a data-sid=\"3f9ca34f-643d-b2fa-ed7f-811996d90b97\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d0c628ccc4f3f709JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPURKSUEmZmlsdGVycz1zaWQ6IjNmOWNhMzRmLTY0M2QtYjJmYS1lZDdmLTgxMTk5NmQ5MGI5NyI&amp;ntb=1\" h=\"ID=SERP,6302.1\">DJIA</a><span> component</span><span> &#183; </span><a data-sid=\"d36136bb-6a40-40d4-d094-0f860f1f8887\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=20fe61dec9b6d97fJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVMlMjZQKzEwMCZmaWx0ZXJzPXNpZDoiZDM2MTM2YmItNmE0MC00MGQ0LWQwOTQtMGY4NjBmMWY4ODg3Ig&amp;ntb=1\" h=\"ID=SERP,6303.1\">S&amp;P 100</a><span> component</span><span> &#183; </span><a data-sid=\"4ef0946d-31b7-304e-410a-4bef17f9fd05\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=05123c6561bcdb5eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVMlMjZQKzUwMCZmaWx0ZXJzPXNpZDoiNGVmMDk0NmQtMzFiNy0zMDRlLTQxMGEtNGJlZjE3ZjlmZDA1Ig&amp;ntb=1\" h=\"ID=SERP,6304.1\">S&amp;P 500</a><span> component</span></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f067e0d59a812b6eJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtmb3VuZGVkJmZpbHRlcnM9c2lkOiJhMDkzZTliOS05MGY1LWEzZDUtYzRiOC01ODU1ZTFiMDFmODUi&amp;ntb=1\" h=\"ID=SERP,6305.1\">Founded</a><span>April 4, 1975 in </span><a data-sid=\"7fffaaf6-e694-4095-be90-f6492cadbd58\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0aecbfbecfc5e5afJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUFsYnVxdWVycXVlJTJjK05ldytNZXhpY28mZmlsdGVycz1zaWQ6IjdmZmZhYWY2LWU2OTQtNDA5NS1iZTkwLWY2NDkyY2FkYmQ1OCI&amp;ntb=1\" h=\"ID=SERP,6306.1\">Albuquerque, New Mexico</a><span>, U.S.</span></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=fa2978c6ecc05f1fJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtmb3VuZGVycyZmaWx0ZXJzPXNpZDoiYTA5M2U5YjktOTBmNS1hM2Q1LWM0YjgtNTg1NWUxYjAxZjg1Ig&amp;ntb=1\" h=\"ID=SERP,6307.1\">Founders</a><a data-sid=\"0d47c987-0042-5576-15e8-97af601614fa\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=3c8adc6d6077bc04JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUJpbGwrR2F0ZXMmZmlsdGVycz1zaWQ6IjBkNDdjOTg3LTAwNDItNTU3Ni0xNWU4LTk3YWY2MDE2MTRmYSI&amp;ntb=1\" h=\"ID=SERP,6308.1\">Bill Gates</a><span> &#183; </span><a data-sid=\"df2c4376-9923-6a54-893f-2ee5a5badbc7\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f28166440d37bc70JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMwOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVBhdWwrQWxsZW4mZmlsdGVycz1zaWQ6ImRmMmM0Mzc2LTk5MjMtNmE1NC04OTNmLTJlZTVhNWJhZGJjNyI&amp;ntb=1\" h=\"ID=SERP,6309.1\">Paul Allen</a></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f7ba0bd29da09e64JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxMA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtoZWFkcXVhcnRlcnMmZmlsdGVycz1zaWQ6ImEwOTNlOWI5LTkwZjUtYTNkNS1jNGI4LTU4NTVlMWIwMWY4NSI&amp;ntb=1\" h=\"ID=SERP,6310.1\">Headquarters</a><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=faa9491cfd721b2aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT25lX01pY3Jvc29mdF9XYXk&amp;ntb=1\" h=\"ID=SERP,6311.1\">One Microsoft Way</a><span> &#183; </span><a data-sid=\"8769d4c0-b645-70ac-03ec-6eebabf6d26e\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5f6496dd7088a5d7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVJlZG1vbmQlMmMrV2FzaGluZ3RvbiZmaWx0ZXJzPXNpZDoiODc2OWQ0YzAtYjY0NS03MGFjLTAzZWMtNmVlYmFiZjZkMjZlIg&amp;ntb=1\" h=\"ID=SERP,6312.1\">Redmond, Washington</a><span> &#183; </span><span>U.S.</span></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a1e3204949c25f06JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtrZXkrcGVvcGxlJmZpbHRlcnM9c2lkOiJhMDkzZTliOS05MGY1LWEzZDUtYzRiOC01ODU1ZTFiMDFmODUi&amp;ntb=1\" h=\"ID=SERP,6313.1\">Key people</a><a data-sid=\"e23e51ed-d16f-4800-9a31-ed056168b9a2\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c2c5fe9b3527b6f0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVNhdHlhK05hZGVsbGEmZmlsdGVycz1zaWQ6ImUyM2U1MWVkLWQxNmYtNDgwMC05YTMxLWVkMDU2MTY4YjlhMiI&amp;ntb=1\" h=\"ID=SERP,6314.1\">Satya Nadella</a><span> (</span><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d60a79807b37178bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhaXJtYW4&amp;ntb=1\" h=\"ID=SERP,6315.1\">Chairman</a><span> &amp; </span><a data-sid=\"cf5db860-9fd2-390d-0b6d-5ba856efed49\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e566d2255ea58402JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUNFTyZmaWx0ZXJzPXNpZDoiY2Y1ZGI4NjAtOWZkMi0zOTBkLTBiNmQtNWJhODU2ZWZlZDQ5Ig&amp;ntb=1\" h=\"ID=SERP,6316.1\">CEO</a><span>)</span><span> &#183; </span><a data-sid=\"7a2b0fce-e0ac-6247-d2d3-80750290e807\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=cb921f103bc71d16JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUJyYWQrU21pdGgmZmlsdGVycz1zaWQ6IjdhMmIwZmNlLWUwYWMtNjI0Ny1kMmQzLTgwNzUwMjkwZTgwNyI&amp;ntb=1\" h=\"ID=SERP,6317.1\">Brad Smith</a><span> (</span><a target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=4e738cda1110ce23JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmljZS1DaGFpcm1hbg&amp;ntb=1\" h=\"ID=SERP,6318.1\">Vice Chairman</a><span> &amp; </span><a data-sid=\"3b9305cd-2076-4bc8-8b1c-1a01433d71a8\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c9ab20d4e9018ac7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMxOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVByZXNpZGVudCZmaWx0ZXJzPXNpZDoiM2I5MzA1Y2QtMjA3Ni00YmM4LThiMWMtMWEwMTQzM2Q3MWE4Ig&amp;ntb=1\" h=\"ID=SERP,6319.1\">President</a><span>)</span><span> &#183; </span><span>Bill Gates (</span><a data-sid=\"ac13d79c-7569-2321-455e-1c6f72a2f5a4\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=fbb94a55ca298feeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyMA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPXRlY2huaWNhbCthZHZpc2VyJmZpbHRlcnM9c2lkOiJhYzEzZDc5Yy03NTY5LTIzMjEtNDU1ZS0xYzZmNzJhMmY1YTQi&amp;ntb=1\" h=\"ID=SERP,6320.1\">technical adviser</a><span>)</span></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a848802dc5cbfca0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtudW1iZXIrb2YrZW1wbG95ZWVzJmZpbHRlcnM9c2lkOiJhMDkzZTliOS05MGY1LWEzZDUtYzRiOC01ODU1ZTFiMDFmODUi&amp;ntb=1\" h=\"ID=SERP,6321.1\">Number of employees</a><span>221,000 (2023)</span></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div><div class=\"l_ecrd_vqfcts_row l_ecrd_vqfcts_row_space\"><div class=\"lc_expfact\"><div class=\"lc_expfact_default\"><a hover-data=\"-\" class=\"lc_expfact_title\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=35afc2de40e00a18JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtzdWJzaWRpYXJpZXMmZmlsdGVycz1zaWQ6ImEwOTNlOWI5LTkwZjUtYTNkNS1jNGI4LTU4NTVlMWIwMWY4NSI&amp;ntb=1\" h=\"ID=SERP,6322.1\">Subsidiaries</a><a data-sid=\"36e6f877-fe17-921b-488f-13492cf67ca7\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d101b2f10184e7c0JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtKYXBhbiZmaWx0ZXJzPXNpZDoiMzZlNmY4NzctZmUxNy05MjFiLTQ4OGYtMTM0OTJjZjY3Y2E3Ig&amp;ntb=1\" h=\"ID=SERP,6323.1\">Microsoft Japan</a><span> &#183; </span><a data-sid=\"3a4567f2-0f55-0158-d038-4c3090bd6336\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7b933687f4682f63JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtJbmRpYSZmaWx0ZXJzPXNpZDoiM2E0NTY3ZjItMGY1NS0wMTU4LWQwMzgtNGMzMDkwYmQ2MzM2Ig&amp;ntb=1\" h=\"ID=SERP,6324.1\">Microsoft India</a><span> &#183; </span><a data-sid=\"87328760-c10e-42eb-48e7-b4d567f80994\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9b732bc5a2d39c1dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1pY3Jvc29mdCtFZ3lwdCZmaWx0ZXJzPXNpZDoiODczMjg3NjAtYzEwZS00MmViLTQ4ZTctYjRkNTY3ZjgwOTk0Ig&amp;ntb=1\" h=\"ID=SERP,6325.1\">Microsoft Egypt</a><span> &#183; </span><a data-sid=\"8528e02f-4774-a8d4-b753-b2f78720cba3\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5d01cc90b415b224JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUdpdEh1YiZmaWx0ZXJzPXNpZDoiODUyOGUwMmYtNDc3NC1hOGQ0LWI3NTMtYjJmNzg3MjBjYmEzIg&amp;ntb=1\" h=\"ID=SERP,6326.1\">GitHub</a><span> &#183; </span><a data-sid=\"401e29b7-e564-7d0a-69dd-4aeff23c198d\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=46633130430f1658JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPUxpbmtlZEluJmZpbHRlcnM9c2lkOiI0MDFlMjliNy1lNTY0LTdkMGEtNjlkZC00YWVmZjIzYzE5OGQi&amp;ntb=1\" h=\"ID=SERP,6327.1\">LinkedIn</a><span> &#183; </span><a data-sid=\"86f7f4e5-2af0-fc23-4612-fc53087af9e4\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5c31c4a7061edba6JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU1ldGFzd2l0Y2gmZmlsdGVycz1zaWQ6Ijg2ZjdmNGU1LTJhZjAtZmMyMy00NjEyLWZjNTMwODdhZjllNCI&amp;ntb=1\" h=\"ID=SERP,6328.1\">Metaswitch</a><span> &#183; </span><a data-sid=\"317d5e2f-38be-ca9a-e5b4-377c47b12a68\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8c09421385611f6cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMyOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPU51YW5jZStDb21tdW5pY2F0aW9ucyZmaWx0ZXJzPXNpZDoiMzE3ZDVlMmYtMzhiZS1jYTlhLWU1YjQtMzc3YzQ3YjEyYTY4Ig&amp;ntb=1\" h=\"ID=SERP,6329.1\">Nuance Communications</a><span> &#183; </span><a data-sid=\"07c9c016-5734-2d90-075f-67f9f3e6bf8a\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=d439bbc00b8c3f9bJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzMA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVJpc2tJUSZmaWx0ZXJzPXNpZDoiMDdjOWMwMTYtNTczNC0yZDkwLTA3NWYtNjdmOWYzZTZiZjhhIg&amp;ntb=1\" h=\"ID=SERP,6330.1\">RiskIQ</a><span> &#183; </span><a data-sid=\"78d01f50-0249-68f1-1f48-94e2d8ecc8b4\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=18bc8fbde47eb029JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzMQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVNreXBlK1RlY2hub2xvZ2llcyZmaWx0ZXJzPXNpZDoiNzhkMDFmNTAtMDI0OS02OGYxLTFmNDgtOTRlMmQ4ZWNjOGI0Ig&amp;ntb=1\" h=\"ID=SERP,6331.1\">Skype Technologies</a><span> &#183; </span><a data-sid=\"8b249103-b6b6-0104-c669-61a9a62a410e\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=4c76b1275b1b5333JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzMg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVhhbWFyaW4mZmlsdGVycz1zaWQ6IjhiMjQ5MTAzLWI2YjYtMDEwNC1jNjY5LTYxYTlhNjJhNDEwZSI&amp;ntb=1\" h=\"ID=SERP,6332.1\">Xamarin</a><span> &#183; </span><a data-sid=\"94c14d52-db28-334f-df65-9e68afc3e67a\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=40cb76b3b8d59bdbJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzMw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPVhhbmRyJmZpbHRlcnM9c2lkOiI5NGMxNGQ1Mi1kYjI4LTMzNGYtZGY2NS05ZTY4YWZjM2U2N2Ei&amp;ntb=1\" h=\"ID=SERP,6333.1\">Xandr</a></div><div tabindex=\"0\" class=\"lc_expfact_plus\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><g><rect width=\"16\" height=\"16\" fill-opacity=\"0\" /><path d=\"M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z\" /><path fill=\"none\" d=\"M0 0h16v16H0z\" /></g></svg></div></div></div></div></div><div class=\"lite-entcard-blk\"\n     id=\"l_ecrd_blk_ExploreMore\" data-priority=\"2\"><div class=\"l_ecrd_simgset\"><div class=\"l_ecrd_imgsetgrid_ttl\"><a target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=381d5bc5e346ab63JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzNA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPW1pY3Jvc29mdCthY2NvdW50JmZpbHRlcnM9c2lkOiIyZTY1MmQwOC00YmM4LTk1MTQtZmIwOC0yMTBjYmZkZjM5NmIiK2xpdGU6Ii5TMk5rVW1Wc1lYUnBiMjVlWVRBNU0yVTVZamt0T1RCbU5TMWhNMlExTFdNMFlqZ3ROVGcxTldVeFlqQXhaamcxWGw1ZVhpUkZiblJwZEhreVgyVnUi&amp;ntb=1\" h=\"ID=SERP,6334.1\"><div class=\"l_ecrd_mttl\"\n     id=\"lite-entcard_a093e_Explore\"><div class=\"l_ecrd_txt_gl\"><h3>Explore more</h3></div><div></div></div></a></div><ul><li><a id=\"lite-entcard_a093e_Explore_0\" class=\"as_pasf_data\" target=\"_blank\" aria-label=\"Microsoft account\" aria-labelledby=\"lite-entcard_a093e_Explore lite-entcard_a093e_Explore_0\" data-sid=\"2e652d08-4bc8-9514-fb08-210cbfdf396b\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=e667e6c05ccc4a2cJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzNQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPW1pY3Jvc29mdCthY2NvdW50JmZpbHRlcnM9c2lkOiIyZTY1MmQwOC00YmM4LTk1MTQtZmIwOC0yMTBjYmZkZjM5NmIiK2xpdGU6Ii5TMk5rVW1Wc1lYUnBiMjVlWVRBNU0yVTVZamt0T1RCbU5TMWhNMlExTFdNMFlqZ3ROVGcxTldVeFlqQXhaamcxWGw1ZVhpUkZiblJwZEhreVgyVnUi&amp;ntb=1\" h=\"ID=SERP,6335.1\"><div class=\"cico\" style=\"width:80px;height:80px;\"><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-height=\"80\" data-width=\"80\" data-title=\"Microsoft account\" data-data-priority=\"2\" data-alt=\"Microsoft account\" data-class=\"rms_img\" data-src=\"/th?id=OSK.JkKaPZcHggWYrpOsYTYaQfcvCncLwdBeez05feB7Ito&amp;w=80&amp;h=80&amp;c=7&amp;o=6&amp;pid=SANGAM\"></div></div><div class=\"l_ecrd_simgset_item_data\"\n     style=\"width:80px;\"><div class=\"l_ecrd_rq_btxt\">Microsoft account</div></div></a></li><li><a id=\"lite-entcard_a093e_Explore_1\" class=\"as_pasf_data\" target=\"_blank\" aria-label=\"Hewlett-Packard\" aria-labelledby=\"lite-entcard_a093e_Explore lite-entcard_a093e_Explore_1\" data-sid=\"5b1c699f-f2bf-16e8-c193-3d4fab8b4e96\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=42b0eb2c0462b396JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzNg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPUhld2xldHQtUGFja2FyZCZmaWx0ZXJzPXNpZDoiNWIxYzY5OWYtZjJiZi0xNmU4LWMxOTMtM2Q0ZmFiOGI0ZTk2IitsaXRlOiIuUzJOa1VtVnNZWFJwYjI1ZVlUQTVNMlU1WWprdE9UQm1OUzFoTTJRMUxXTTBZamd0TlRnMU5XVXhZakF4WmpnMVhsNWVYaVJGYm5ScGRIa3lYMlZ1Ig&amp;ntb=1\" h=\"ID=SERP,6336.1\"><div class=\"cico\" style=\"width:80px;height:80px;\"><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-height=\"80\" data-width=\"80\" data-title=\"Hewlett-Packard\" data-data-priority=\"2\" data-alt=\"Hewlett-Packard\" data-class=\"rms_img\" data-src=\"/th?id=OSK.dee29841b5f43a2d20fb8cc38c0823fb&amp;w=80&amp;h=80&amp;c=7&amp;o=6&amp;pid=SANGAM\"></div></div><div class=\"l_ecrd_simgset_item_data\"\n     style=\"width:80px;\"><div class=\"l_ecrd_rq_btxt\">Hewlett-Packard</div></div></a></li><li><a id=\"lite-entcard_a093e_Explore_2\" class=\"as_pasf_data\" target=\"_blank\" aria-label=\"Intel\" aria-labelledby=\"lite-entcard_a093e_Explore lite-entcard_a093e_Explore_2\" data-sid=\"7bfef1c1-5ff1-f982-bec0-1b930222148c\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a0d29baadabd4df4JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzNw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPUludGVsJmZpbHRlcnM9c2lkOiI3YmZlZjFjMS01ZmYxLWY5ODItYmVjMC0xYjkzMDIyMjE0OGMiK2xpdGU6Ii5TMk5rVW1Wc1lYUnBiMjVlWVRBNU0yVTVZamt0T1RCbU5TMWhNMlExTFdNMFlqZ3ROVGcxTldVeFlqQXhaamcxWGw1ZVhpUkZiblJwZEhreVgyVnUi&amp;ntb=1\" h=\"ID=SERP,6337.1\"><div class=\"cico\" style=\"width:80px;height:80px;\"><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-height=\"80\" data-width=\"80\" data-title=\"Intel\" data-data-priority=\"2\" data-alt=\"Intel\" data-class=\"rms_img\" data-src=\"/th?id=OSK.1229f8f96e4d0ab8d961313341ccda5c&amp;w=80&amp;h=80&amp;c=7&amp;o=6&amp;pid=SANGAM\"></div></div><div class=\"l_ecrd_simgset_item_data\"\n     style=\"width:80px;\"><div class=\"l_ecrd_rq_btxt\">Intel</div></div></a></li><li><a id=\"lite-entcard_a093e_Explore_3\" class=\"as_pasf_data\" target=\"_blank\" aria-label=\"Nokia\" aria-labelledby=\"lite-entcard_a093e_Explore lite-entcard_a093e_Explore_3\" data-sid=\"4b78255b-7de6-110b-6394-9a03497fdb07\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=a47d7e2bbc768743JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzOA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPU5va2lhJmZpbHRlcnM9c2lkOiI0Yjc4MjU1Yi03ZGU2LTExMGItNjM5NC05YTAzNDk3ZmRiMDciK2xpdGU6Ii5TMk5rVW1Wc1lYUnBiMjVlWVRBNU0yVTVZamt0T1RCbU5TMWhNMlExTFdNMFlqZ3ROVGcxTldVeFlqQXhaamcxWGw1ZVhpUkZiblJwZEhreVgyVnUi&amp;ntb=1\" h=\"ID=SERP,6338.1\"><div class=\"cico\" style=\"width:80px;height:80px;\"><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-height=\"80\" data-width=\"80\" data-title=\"Nokia\" data-data-priority=\"2\" data-alt=\"Nokia\" data-class=\"rms_img\" data-src=\"/th?id=OSK.2541f762f7a6270b54967b5e3a0bab8e&amp;w=80&amp;h=80&amp;c=7&amp;o=6&amp;pid=SANGAM\"></div></div><div class=\"l_ecrd_simgset_item_data\"\n     style=\"width:80px;\"><div class=\"l_ecrd_rq_btxt\">Nokia</div></div></a></li><li><a id=\"lite-entcard_a093e_Explore_4\" class=\"as_pasf_data\" target=\"_blank\" aria-label=\"Bilibili\" aria-labelledby=\"lite-entcard_a093e_Explore lite-entcard_a093e_Explore_4\" data-sid=\"30723346-26d5-53eb-22e3-39879ae84233\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8617b6a5917f931aJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjMzOQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPUtDRVhQTCZxPUJpbGliaWxpJmZpbHRlcnM9c2lkOiIzMDcyMzM0Ni0yNmQ1LTUzZWItMjJlMy0zOTg3OWFlODQyMzMiK2xpdGU6Ii5TMk5rVW1Wc1lYUnBiMjVlWVRBNU0yVTVZamt0T1RCbU5TMWhNMlExTFdNMFlqZ3ROVGcxTldVeFlqQXhaamcxWGw1ZVhpUkZiblJwZEhreVgyVnUi&amp;ntb=1\" h=\"ID=SERP,6339.1\"><div class=\"cico\" style=\"width:80px;height:80px;\"><div class=\"rms_iac\" style=\"height:80px;line-height:80px;width:80px;\" data-height=\"80\" data-width=\"80\" data-title=\"Bilibili\" data-data-priority=\"2\" data-alt=\"Bilibili\" data-class=\"rms_img\" data-src=\"/th?id=OSK.FRRvPnxHqwKHGTbAH3Q2tB49WpxHMR0voEXItIieKaw&amp;w=80&amp;h=80&amp;c=7&amp;o=6&amp;pid=SANGAM\"></div></div><div class=\"l_ecrd_simgset_item_data\"\n     style=\"width:80px;\"><div class=\"l_ecrd_rq_btxt\">Bilibili</div></div></a></li></ul></div></div><div class=\"lite-entcard-blk\"\n     id=\"l_ecrd_blk_4_Footer\"><div class=\"l_ecrd_ftr\"><div class=\"l_ecrd_ftr_txt\">Image:  <a Title=\"gettyimages.com\" target=\"_blank\" aria-label=\"Image attribution Getty Images\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=ff8d7a6fce1523ecJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuZ2V0dHlpbWFnZXMuY29tLw&amp;ntb=1\" h=\"ID=SERP,6340.1\">Getty Images</a>. Data:  <a Title=\"en.wikipedia.org\" target=\"_blank\" aria-label=\"Data attribution Wikipedia\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=c3e07e043df1a043JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn&amp;ntb=1\" h=\"ID=SERP,6341.1\">Wikipedia</a> &#183; <a Title=\"microsoft.com\" target=\"_blank\" aria-label=\"Data attribution microsoft.com\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6dfc7052e9b3eeb5JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9hYm91dA&amp;ntb=1\" h=\"ID=SERP,6342.1\">microsoft.com</a> &#183; <a Title=\"startuptalky.com\" target=\"_blank\" aria-label=\"Data attribution startuptalky.com\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=0788be69c8000aa8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0Mw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zdGFydHVwdGFsa3kuY29t&amp;ntb=1\" h=\"ID=SERP,6343.1\">startuptalky.com</a> &#183; <a Title=\"companieshistory.com\" target=\"_blank\" aria-label=\"Data attribution companieshistory.com\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=5dd81c4d3eb2c1f8JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuY29tcGFuaWVzaGlzdG9yeS5jb20&amp;ntb=1\" h=\"ID=SERP,6344.1\">companieshistory.com</a> &#183; <a Title=\"thefactsite.com\" target=\"_blank\" aria-label=\"Data attribution thefactsite.com\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=8db65c22f58bd6dbJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0NQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cudGhlZmFjdHNpdGUuY29t&amp;ntb=1\" h=\"ID=SERP,6345.1\">thefactsite.com</a> &#183; <a Title=\"tech25s.com\" target=\"_blank\" aria-label=\"Data attribution tech25s.com\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=31f294a67ae8ae7dJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0Ng&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly90ZWNoMjVzLmNvbQ&amp;ntb=1\" h=\"ID=SERP,6346.1\">tech25s.com</a> &#183; <a Title=\"businessinsider.in\" target=\"_blank\" aria-label=\"Data attribution businessinsider.in\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=7acf704217a7d4c7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0Nw&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly93d3cuYnVzaW5lc3NpbnNpZGVyLmluI3NsaWRlaWQ9NTEzODQ3OTQ&amp;ntb=1\" h=\"ID=SERP,6347.1\">businessinsider.in</a><br />Wikipedia text under <a Title=\"creativecommons.org\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=85ee3e04374198bdJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzMuMC8&amp;ntb=1\" h=\"ID=SERP,6348.1\">CC-BY-SA license</a><br /><div class=\"l_ecrd_tud\"><div id=\"fdbk_thmb16\" class=\"fdbk_thmb_root  \" data-priority=\"2\" aria-live=\"polite\"><div id=\"fdbk_emotion16\" class=\"fdbk_emotion\"></div><span id=\"fdbtext_16\" class=\"fdbtext\">Feedback</span><a id=\"thumb_t16\" class=\"thumb_y \" role=\"button\" aria-label=\"Feedback Like\" href=\"javascript:void(0)\" h=\"ID=SERP,6413.1\"></a><a id=\"thumb_f16\" class=\"thumb_n \" role=\"button\" aria-label=\"Feedback Dislike\" href=\"javascript:void(0)\" h=\"ID=SERP,6414.1\"></a><div id=\"thumbUpTips16\" class=\"fdbk_hide fdbtext\"><span>Thanks!</span><a id=\"thumb_tum16\" role=\"button\" aria-label=\"Tell us more\" href=\"javascript:void(0)\" h=\"ID=SERP,6415.1\">Tell us more</a></div></div></div></div><div class=\"l_ecrd_ftr_seemore l_ecrd_brdr_thm\"><a class=\"l_ecrd_thmtxt\" target=\"_blank\" hover-data=\"-\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=b883411d22348d16JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NjM0OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;u=a1L3NlYXJjaD9GT1JNPVNOQVBTVCZxPW1pY3Jvc29mdCt3aWtpcGVkaWEmZmlsdGVycz1zaWQ6ImEwOTNlOWI5LTkwZjUtYTNkNS1jNGI4LTU4NTVlMWIwMWY4NSI&amp;ntb=1\" h=\"ID=SERP,6349.1\">See more</a></div></div></div></div></div></div></div></li></ol></aside><aside aria-label=\"Explore More\"><ol id=\"b_dynRail\"></ol></aside></div><footer id=\"b_footer\" class=\"b_footer\" role=\"contentinfo\" aria-label=\"Footer\"><div id=\"b_footerItems\"><span>&#169; 2024 Microsoft</span><ul><li><a id=\"sb_privacy\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=9f34e540fac56fbeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA3OA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cDovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSWQ9NTIxODM5&amp;ntb=1\" h=\"ID=SERP,5078.1\">Privacy and Cookies</a></li><li><a id=\"sb_legal\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6990dd9e25408afeJmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA3OQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cDovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9MjQ2MzM4&amp;ntb=1\" h=\"ID=SERP,5079.1\">Legal</a></li><li><a id=\"sb_advertise\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=6535ccb1f8040198JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA4MA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8_bGlua2lkPTg2ODkyMg&amp;ntb=1\" h=\"ID=SERP,5080.1\">Advertise</a></li><li><a id=\"sb_adinfo\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=4360062a3a0c1c86JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA4MQ&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cDovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9Mjg2NzU5&amp;ntb=1\" h=\"ID=SERP,5081.1\">About our ads</a></li><li><a id=\"sb_help\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=764628906be02aa7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA4Mg&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vdG9waWMvODJkMjA3MjEtMmQ2Zi00MDEyLWExM2QtZDE5MTBjY2YyMDNm&amp;ntb=1\" h=\"ID=SERP,5082.1\">Help</a></li><li><a role=\"button\" id=\"sb_feedback\" href=\"#\" h=\"ID=SERP,5083.1\">Feedback</a></li><li><a id=\"sb_california_privacy\" target=\"_blank\" href=\"https://www.bing.com/ck/a?!&amp;&amp;p=f9280d124b3869b7JmltdHM9MTcxMDQ2MDgwMCZpZ3VpZD0xNWViYmNjMy05YmU3LTY3NTYtMzRhNC1hODgwOWE1ZDY2MTcmaW5zaWQ9NTA4NA&amp;ptn=3&amp;ver=2&amp;hsh=3&amp;fclid=15ebbcc3-9be7-6756-34a4-a8809a5d6617&amp;psq=Microsoft+wikipedia&amp;u=a1aHR0cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8_bGlua2lkPTIyMTQ4MDI&amp;ntb=1\" h=\"ID=SERP,5084.1\">Your Privacy Choices</a></li></ul></div><!--foo--></footer><link id=\"as-css-link\" rel=\"prefetch\" fetchpriority=\"low\" href=\"https://r.bing.com/rp/-sx75nVzM3_kGN3RdbPXMeVMYCw.gz.css\" type=\"text/css\" as=\"style\" /><div id=\"b_TriviaOverlay\"></div><div class=\"sb_hbop\"><div id=\"d5159\" class=\"b_hide b_dropdown\" role=\"menu\" data-filterkey=\"\"><div class=\"ftrD\" id=\"ftrD_Any_time\"><a class=\"b_toggle\" role=\"menuitem\" href=\"/search?q=Microsoft+wikipedia&amp;FORM=000017&amp;qpvt=Microsoft+wikipedia\" h=\"ID=SERP,5522.1\">All</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=Microsoft+wikipedia&amp;filters=ex1%3a%22ez1%22&amp;FORM=000017&amp;qpvt=Microsoft+wikipedia\" h=\"ID=SERP,5523.1\">Past 24 hours</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=Microsoft+wikipedia&amp;filters=ex1%3a%22ez2%22&amp;FORM=000017&amp;qpvt=Microsoft+wikipedia\" h=\"ID=SERP,5524.1\">Past week</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=Microsoft+wikipedia&amp;filters=ex1%3a%22ez3%22&amp;FORM=000017&amp;qpvt=Microsoft+wikipedia\" h=\"ID=SERP,5525.1\">Past month</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=Microsoft+wikipedia&amp;filters=ex1%3a%22ez5_19432_19797%22&amp;FORM=000017\" h=\"ID=SERP,5526.1\">Past year</a><span id=\"drvph\" data-url=\"/control/tfcalendar?q=Microsoft%20wikipedia&amp;FORM=QBLH&amp;IG=7DE503E4162940FA9A03BF17C440033D&amp;StartDate=03%2f05%2f2024+10%3a18%3a43&amp;EndDate=03%2f15%2f2024+10%3a18%3a43&amp;IsApplied=False&amp;DisplayText=Custom+range&amp;DateOffset=0&amp;FormCode=&amp;ApplyLinkUrl=%2fsearch%3fq%3dMicrosoft%2bwikipedia%26filters%3dex1%253a%2522ez5_0_0%2522%26FORM%3d000017%26qpvt%3dMicrosoft%2bwikipedia&amp;ApplyLinkText=ez5&amp;IID=SERP.5159\"></span></div></div><div id=\"PromptDetails\" class=\"b_hide\" data-lat=\"0\" data-lon=\"0\" data-dist=\"0\" data-noRefresh=\"true\" data-check=\"true\"></div><div id=\"g_EfLoc\" data-lat=\"47.75286865234375\" data-lon=\"-122.07816314697266\" data-disp=\"Cottage Lake, Washington\"\n                data-source=\"4\"></div></div><script type=\"text/javascript\" nonce=\"CBIzbSUqGEmYGU6mNbpe6yIKH2OE12Z19w8WyWqhgrU=\">//<![CDATA[\nif(RichCaptionCellTemplate && RichCaptionCellTemplate.init){ RichCaptionCellTemplate.init(\"https://en.wikipedia.org/wiki/Microsoft\", 350, 570, \"5599\", true, true, false); } if(WikiRichcardV2 && WikiRichcardV2.init){ WikiRichcardV2.init(\"https://en.wikipedia.org/wiki/Microsoft\", 350, 570, \"5599\", true); };\n//]]></script></body></html>\n"
  },
  {
    "path": "packages/markitdown/tests/test_files/test_wikipedia.html",
    "content": "<!DOCTYPE html>\n<html class=\"client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-0 vector-feature-client-preferences-disabled vector-feature-client-prefs-pinned-disabled vector-feature-night-mode-disabled skin-night-mode-clientpref-0 vector-toc-available\" lang=\"en\" dir=\"ltr\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Microsoft - Wikipedia</title>\n<link rel=\"stylesheet\" href=\"/w/load.php?lang=en&amp;modules=codex-search-styles%7Cext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cjquery.makeCollapsible.styles%7Cjquery.tablesorter.styles%7Cmediawiki.page.gallery.styles%7Cskins.vector.icons%2Cstyles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022\">\n<script async=\"\" src=\"/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022\"></script>\n<meta name=\"ResourceLoaderDynamicStyles\" content=\"\">\n<link rel=\"stylesheet\" href=\"/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022\">\n<meta name=\"generator\" content=\"MediaWiki 1.42.0-wmf.21\">\n<meta name=\"referrer\" content=\"origin\">\n<meta name=\"referrer\" content=\"origin-when-cross-origin\">\n<meta name=\"robots\" content=\"max-image-preview:standard\">\n<meta name=\"format-detection\" content=\"telephone=no\">\n<meta property=\"og:image\" content=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/1200px-Building92microsoft.jpg\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"800\">\n<meta property=\"og:image\" content=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/800px-Building92microsoft.jpg\">\n<meta property=\"og:image:width\" content=\"800\">\n<meta property=\"og:image:height\" content=\"533\">\n<meta property=\"og:image\" content=\"https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/640px-Building92microsoft.jpg\">\n<meta property=\"og:image:width\" content=\"640\">\n<meta property=\"og:image:height\" content=\"427\">\n<meta name=\"viewport\" content=\"width=1000\">\n<meta property=\"og:title\" content=\"Microsoft - Wikipedia\">\n<meta property=\"og:type\" content=\"website\">\n<link rel=\"preconnect\" href=\"//upload.wikimedia.org\">\n<link rel=\"alternate\" media=\"only screen and (max-width: 720px)\" href=\"//en.m.wikipedia.org/wiki/Microsoft\">\n<link rel=\"apple-touch-icon\" href=\"/static/apple-touch/wikipedia.png\">\n<link rel=\"icon\" href=\"/static/favicon/wikipedia.ico\">\n<link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"/w/opensearch_desc.php\" title=\"Wikipedia (en)\">\n<link rel=\"EditURI\" type=\"application/rsd+xml\" href=\"//en.wikipedia.org/w/api.php?action=rsd\">\n<link rel=\"canonical\" href=\"https://en.wikipedia.org/wiki/Microsoft\">\n<link rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/deed.en\">\n<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Wikipedia Atom feed\" href=\"/w/index.php?title=Special:RecentChanges&amp;feed=atom\">\n<link rel=\"dns-prefetch\" href=\"//meta.wikimedia.org\" />\n<link rel=\"dns-prefetch\" href=\"//login.wikimedia.org\">\n</head>\n<body class=\"skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Microsoft rootpage-Microsoft skin-vector-2022 action-view\"><a class=\"mw-jump-link\" href=\"#bodyContent\">Jump to content</a>\n<div class=\"vector-header-container\">\n\t<header class=\"vector-header mw-header\">\n\t\t<div class=\"vector-header-start\">\n\t\t\t<nav class=\"vector-main-menu-landmark\" aria-label=\"Site\" role=\"navigation\">\n\n<div id=\"vector-main-menu-dropdown\" class=\"vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right\"  >\n\t<input type=\"checkbox\" id=\"vector-main-menu-dropdown-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-main-menu-dropdown\" class=\"vector-dropdown-checkbox \"  aria-label=\"Main menu\"  >\n\t<label id=\"vector-main-menu-dropdown-label\" for=\"vector-main-menu-dropdown-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only \" aria-hidden=\"true\"  ><span class=\"vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu\"></span>\n\n<span class=\"vector-dropdown-label-text\">Main menu</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\n\t\t\t\t<div id=\"vector-main-menu-unpinned-container\" class=\"vector-unpinned-container\">\n\n<div id=\"vector-main-menu\" class=\"vector-main-menu vector-pinnable-element\">\n\t<div\n\tclass=\"vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned\"\n\tdata-feature-name=\"main-menu-pinned\"\n\tdata-pinnable-element-id=\"vector-main-menu\"\n\tdata-pinned-container-id=\"vector-main-menu-pinned-container\"\n\tdata-unpinned-container-id=\"vector-main-menu-unpinned-container\"\n>\n\t<div class=\"vector-pinnable-header-label\">Main menu</div>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-pin-button\" data-event-name=\"pinnable-header.vector-main-menu.pin\">move to sidebar</button>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button\" data-event-name=\"pinnable-header.vector-main-menu.unpin\">hide</button>\n</div>\n\n\n<div id=\"p-navigation\" class=\"vector-menu mw-portlet mw-portlet-navigation\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tNavigation\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"n-mainpage-description\" class=\"mw-list-item\"><a href=\"/wiki/Main_Page\" title=\"Visit the main page [z]\" accesskey=\"z\"><span>Main page</span></a></li><li id=\"n-contents\" class=\"mw-list-item\"><a href=\"/wiki/Wikipedia:Contents\" title=\"Guides to browsing Wikipedia\"><span>Contents</span></a></li><li id=\"n-currentevents\" class=\"mw-list-item\"><a href=\"/wiki/Portal:Current_events\" title=\"Articles related to current events\"><span>Current events</span></a></li><li id=\"n-randompage\" class=\"mw-list-item\"><a href=\"/wiki/Special:Random\" title=\"Visit a randomly selected article [x]\" accesskey=\"x\"><span>Random article</span></a></li><li id=\"n-aboutsite\" class=\"mw-list-item\"><a href=\"/wiki/Wikipedia:About\" title=\"Learn about Wikipedia and how it works\"><span>About Wikipedia</span></a></li><li id=\"n-contactpage\" class=\"mw-list-item\"><a href=\"//en.wikipedia.org/wiki/Wikipedia:Contact_us\" title=\"How to contact Wikipedia\"><span>Contact us</span></a></li><li id=\"n-sitesupport\" class=\"mw-list-item\"><a href=\"https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en\" title=\"Support us by donating to the Wikimedia Foundation\"><span>Donate</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n\n<div id=\"p-interaction\" class=\"vector-menu mw-portlet mw-portlet-interaction\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tContribute\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"n-help\" class=\"mw-list-item\"><a href=\"/wiki/Help:Contents\" title=\"Guidance on how to use and edit Wikipedia\"><span>Help</span></a></li><li id=\"n-introduction\" class=\"mw-list-item\"><a href=\"/wiki/Help:Introduction\" title=\"Learn how to edit Wikipedia\"><span>Learn to edit</span></a></li><li id=\"n-portal\" class=\"mw-list-item\"><a href=\"/wiki/Wikipedia:Community_portal\" title=\"The hub for editors\"><span>Community portal</span></a></li><li id=\"n-recentchanges\" class=\"mw-list-item\"><a href=\"/wiki/Special:RecentChanges\" title=\"A list of recent changes to Wikipedia [r]\" accesskey=\"r\"><span>Recent changes</span></a></li><li id=\"n-upload\" class=\"mw-list-item\"><a href=\"/wiki/Wikipedia:File_upload_wizard\" title=\"Add images or other media for use on Wikipedia\"><span>Upload file</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n</div>\n\n\t\t\t\t</div>\n\n\t</div>\n</div>\n\n\t\t</nav>\n\n<a href=\"/wiki/Main_Page\" class=\"mw-logo\">\n\t<img class=\"mw-logo-icon\" src=\"/static/images/icons/wikipedia.png\" alt=\"\" aria-hidden=\"true\" height=\"50\" width=\"50\">\n\t<span class=\"mw-logo-container\">\n\t\t<img class=\"mw-logo-wordmark\" alt=\"Wikipedia\" src=\"/static/images/mobile/copyright/wikipedia-wordmark-en.svg\" style=\"width: 7.5em; height: 1.125em;\">\n\t\t<img class=\"mw-logo-tagline\" alt=\"The Free Encyclopedia\" src=\"/static/images/mobile/copyright/wikipedia-tagline-en.svg\" width=\"117\" height=\"13\" style=\"width: 7.3125em; height: 0.8125em;\">\n\t</span>\n</a>\n\n\t\t</div>\n\t\t<div class=\"vector-header-end\">\n\n<div id=\"p-search\" role=\"search\" class=\"vector-search-box-vue  vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box\">\n\t<a href=\"/wiki/Special:Search\" class=\"cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle\" id=\"\" title=\"Search Wikipedia [f]\" accesskey=\"f\"><span class=\"vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search\"></span>\n\n<span>Search</span>\n\t</a>\n\t<div class=\"vector-typeahead-search-container\">\n\t\t<div class=\"cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width\">\n\t\t\t<form action=\"/w/index.php\" id=\"searchform\" class=\"cdx-search-input cdx-search-input--has-end-button\">\n\t\t\t\t<div id=\"simpleSearch\" class=\"cdx-search-input__input-wrapper\"  data-search-loc=\"header-moved\">\n\t\t\t\t\t<div class=\"cdx-text-input cdx-text-input--has-start-icon\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass=\"cdx-text-input__input\"\n\t\t\t\t\t\t\t type=\"search\" name=\"search\" placeholder=\"Search Wikipedia\" aria-label=\"Search Wikipedia\" autocapitalize=\"sentences\" title=\"Search Wikipedia [f]\" accesskey=\"f\" id=\"searchInput\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"cdx-text-input__icon cdx-text-input__start-icon\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input type=\"hidden\" name=\"title\" value=\"Special:Search\">\n\t\t\t\t</div>\n\t\t\t\t<button class=\"cdx-button cdx-search-input__end-button\">Search</button>\n\t\t\t</form>\n\t\t</div>\n\t</div>\n</div>\n\n\t\t\t<nav class=\"vector-user-links vector-user-links-wide\" aria-label=\"Personal tools\" role=\"navigation\" >\n\t<div class=\"vector-user-links-main\">\n\n<div id=\"p-vector-user-menu-preferences\" class=\"vector-menu mw-portlet emptyPortlet\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n<div id=\"p-vector-user-menu-userpage\" class=\"vector-menu mw-portlet emptyPortlet\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\n\t\t</ul>\n\n\t</div>\n</div>\n\n\t<nav class=\"vector-client-prefs-landmark\" aria-label=\"Appearance\">\n\n\n\t</nav>\n\n<div id=\"p-vector-user-menu-notifications\" class=\"vector-menu mw-portlet emptyPortlet\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n<div id=\"p-vector-user-menu-overflow\" class=\"vector-menu mw-portlet\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\t\t\t<li id=\"pt-createaccount-2\" class=\"user-links-collapsible-item mw-list-item user-links-collapsible-item\"><a data-mw=\"interface\" href=\"/w/index.php?title=Special:CreateAccount&amp;returnto=Microsoft\" title=\"You are encouraged to create an account and log in; however, it is not mandatory\" class=\"\"><span>Create account</span></a>\n</li>\n<li id=\"pt-login-2\" class=\"user-links-collapsible-item mw-list-item user-links-collapsible-item\"><a data-mw=\"interface\" href=\"/w/index.php?title=Special:UserLogin&amp;returnto=Microsoft\" title=\"You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]\" accesskey=\"o\" class=\"\"><span>Log in</span></a>\n</li>\n\n\n\t\t</ul>\n\n\t</div>\n</div>\n\n\t</div>\n\n<div id=\"vector-user-links-dropdown\" class=\"vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out\"  title=\"Log in and more options\" >\n\t<input type=\"checkbox\" id=\"vector-user-links-dropdown-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-user-links-dropdown\" class=\"vector-dropdown-checkbox \"  aria-label=\"Personal tools\"  >\n\t<label id=\"vector-user-links-dropdown-label\" for=\"vector-user-links-dropdown-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only \" aria-hidden=\"true\"  ><span class=\"vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis\"></span>\n\n<span class=\"vector-dropdown-label-text\">Personal tools</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\n\n<div id=\"p-personal\" class=\"vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item\"  title=\"User menu\" >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"pt-createaccount\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/w/index.php?title=Special:CreateAccount&amp;returnto=Microsoft\" title=\"You are encouraged to create an account and log in; however, it is not mandatory\"><span class=\"vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd\"></span> <span>Create account</span></a></li><li id=\"pt-login\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/w/index.php?title=Special:UserLogin&amp;returnto=Microsoft\" title=\"You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]\" accesskey=\"o\"><span class=\"vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn\"></span> <span>Log in</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n<div id=\"p-user-menu-anon-editor\" class=\"vector-menu mw-portlet mw-portlet-user-menu-anon-editor\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tPages for logged out editors <a href=\"/wiki/Help:Introduction\" aria-label=\"Learn more about editing\"><span>learn more</span></a>\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"pt-anoncontribs\" class=\"mw-list-item\"><a href=\"/wiki/Special:MyContributions\" title=\"A list of edits made from this IP address [y]\" accesskey=\"y\"><span>Contributions</span></a></li><li id=\"pt-anontalk\" class=\"mw-list-item\"><a href=\"/wiki/Special:MyTalk\" title=\"Discussion about edits from this IP address [n]\" accesskey=\"n\"><span>Talk</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n\t</div>\n</div>\n\n</nav>\n\n\t\t</div>\n\t</header>\n</div>\n<div class=\"mw-page-container\">\n\t<div class=\"mw-page-container-inner\">\n\t\t<div class=\"vector-sitenotice-container\">\n\t\t\t<div id=\"siteNotice\"><!-- CentralNotice --></div>\n\t\t</div>\n\t\t<div class=\"vector-column-start\">\n\t\t\t<div class=\"vector-main-menu-container\">\n\t\t<div id=\"mw-navigation\">\n\t\t\t<nav id=\"mw-panel\" class=\"vector-main-menu-landmark\" aria-label=\"Site\" role=\"navigation\">\n\t\t\t\t<div id=\"vector-main-menu-pinned-container\" class=\"vector-pinned-container\">\n\n\t\t\t\t</div>\n\t\t</nav>\n\t\t</div>\n\t</div>\n\t<div class=\"vector-sticky-pinned-container\">\n\t\t\t\t<nav id=\"mw-panel-toc\" role=\"navigation\" aria-label=\"Contents\" data-event-name=\"ui.sidebar-toc\" class=\"mw-table-of-contents-container vector-toc-landmark\">\n\t\t\t\t\t<div id=\"vector-toc-pinned-container\" class=\"vector-pinned-container\">\n\t\t\t\t\t<div id=\"vector-toc\" class=\"vector-toc vector-pinnable-element\">\n\t<div\n\tclass=\"vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned\"\n\tdata-feature-name=\"toc-pinned\"\n\tdata-pinnable-element-id=\"vector-toc\"\n\n\n>\n\t<h2 class=\"vector-pinnable-header-label\">Contents</h2>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-pin-button\" data-event-name=\"pinnable-header.vector-toc.pin\">move to sidebar</button>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button\" data-event-name=\"pinnable-header.vector-toc.unpin\">hide</button>\n</div>\n\n\n\t<ul class=\"vector-toc-contents\" id=\"mw-panel-toc-list\">\n\t\t<li id=\"toc-mw-content-text\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t\t<a href=\"#\" class=\"vector-toc-link\">\n\t\t\t\t<div class=\"vector-toc-text\">(Top)</div>\n\t\t\t</a>\n\t\t</li>\n\t\t<li id=\"toc-History\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#History\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">1</span>History</div>\n\t\t</a>\n\n\t\t\t<button aria-controls=\"toc-History-sublist\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle\">\n\t\t\t\t<span class=\"vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand\"></span>\n\t\t\t\t<span>Toggle History subsection</span>\n\t\t\t</button>\n\n\t\t<ul id=\"toc-History-sublist\" class=\"vector-toc-list\">\n\t\t\t<li id=\"toc-1972–1985:_Founding\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#1972–1985:_Founding\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.1</span>1972–1985: Founding</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-1972–1985:_Founding-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-1985–1994:_Windows_and_Office\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#1985–1994:_Windows_and_Office\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.2</span>1985–1994: Windows and Office</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-1985–1994:_Windows_and_Office-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-1995–2007:_Foray_into_the_Web,_Windows_95,_Windows_XP,_and_Xbox\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#1995–2007:_Foray_into_the_Web,_Windows_95,_Windows_XP,_and_Xbox\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.3</span>1995–2007: Foray into the Web, Windows 95, Windows XP, and Xbox</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-1995–2007:_Foray_into_the_Web,_Windows_95,_Windows_XP,_and_Xbox-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-2007–2011:_Microsoft_Azure,_Windows_Vista,_Windows_7,_and_Microsoft_Stores\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#2007–2011:_Microsoft_Azure,_Windows_Vista,_Windows_7,_and_Microsoft_Stores\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.4</span>2007–2011: Microsoft Azure, Windows Vista, Windows 7, and Microsoft Stores</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-2007–2011:_Microsoft_Azure,_Windows_Vista,_Windows_7,_and_Microsoft_Stores-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-2011–2014:_Windows_8/8.1,_Xbox_One,_Outlook.com,_and_Surface_devices\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#2011–2014:_Windows_8/8.1,_Xbox_One,_Outlook.com,_and_Surface_devices\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.5</span>2011–2014: Windows 8/8.1, Xbox One, Outlook.com, and Surface devices</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-2011–2014:_Windows_8/8.1,_Xbox_One,_Outlook.com,_and_Surface_devices-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-2014–2020:_Windows_10,_Microsoft_Edge,_and_HoloLens\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#2014–2020:_Windows_10,_Microsoft_Edge,_and_HoloLens\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.6</span>2014–2020: Windows 10, Microsoft Edge, and HoloLens</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-2014–2020:_Windows_10,_Microsoft_Edge,_and_HoloLens-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-2020–present:_Acquisitions,_Xbox_Series_X/S,_and_Windows_11\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#2020–present:_Acquisitions,_Xbox_Series_X/S,_and_Windows_11\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">1.7</span>2020–present: Acquisitions, Xbox Series X/S, and Windows 11</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-2020–present:_Acquisitions,_Xbox_Series_X/S,_and_Windows_11-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t</ul>\n\t</li>\n\t<li id=\"toc-Corporate_affairs\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#Corporate_affairs\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">2</span>Corporate affairs</div>\n\t\t</a>\n\n\t\t\t<button aria-controls=\"toc-Corporate_affairs-sublist\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle\">\n\t\t\t\t<span class=\"vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand\"></span>\n\t\t\t\t<span>Toggle Corporate affairs subsection</span>\n\t\t\t</button>\n\n\t\t<ul id=\"toc-Corporate_affairs-sublist\" class=\"vector-toc-list\">\n\t\t\t<li id=\"toc-Board_of_directors\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Board_of_directors\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.1</span>Board of directors</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Board_of_directors-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Chief_executives\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Chief_executives\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.2</span>Chief executives</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Chief_executives-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Financial\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Financial\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.3</span>Financial</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Financial-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Subsidiaries\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Subsidiaries\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.4</span>Subsidiaries</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Subsidiaries-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Ownership\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Ownership\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.5</span>Ownership</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Ownership-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Marketing\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Marketing\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.6</span>Marketing</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Marketing-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Layoffs\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Layoffs\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.7</span>Layoffs</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Layoffs-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-United_States_government\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#United_States_government\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.8</span>United States government</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-United_States_government-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Security_challenges\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Security_challenges\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">2.9</span>Security challenges</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Security_challenges-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t</ul>\n\t</li>\n\t<li id=\"toc-Corporate_identity\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#Corporate_identity\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">3</span>Corporate identity</div>\n\t\t</a>\n\n\t\t\t<button aria-controls=\"toc-Corporate_identity-sublist\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle\">\n\t\t\t\t<span class=\"vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand\"></span>\n\t\t\t\t<span>Toggle Corporate identity subsection</span>\n\t\t\t</button>\n\n\t\t<ul id=\"toc-Corporate_identity-sublist\" class=\"vector-toc-list\">\n\t\t\t<li id=\"toc-Corporate_culture\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Corporate_culture\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.1</span>Corporate culture</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Corporate_culture-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Environment\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Environment\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.2</span>Environment</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Environment-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Headquarters\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Headquarters\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.3</span>Headquarters</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Headquarters-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Flagship_stores\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Flagship_stores\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.4</span>Flagship stores</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Flagship_stores-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Logo\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Logo\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.5</span>Logo</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Logo-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Sponsorship\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Sponsorship\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.6</span>Sponsorship</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Sponsorship-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Philanthropy\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Philanthropy\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.7</span>Philanthropy</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Philanthropy-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t\t<li id=\"toc-Controversies\"\n\t\t\tclass=\"vector-toc-list-item vector-toc-level-2\">\n\t\t\t<a class=\"vector-toc-link\" href=\"#Controversies\">\n\t\t\t\t<div class=\"vector-toc-text\">\n\t\t\t\t<span class=\"vector-toc-numb\">3.8</span>Controversies</div>\n\t\t\t</a>\n\n\t\t\t<ul id=\"toc-Controversies-sublist\" class=\"vector-toc-list\">\n\t\t\t</ul>\n\t\t</li>\n\t</ul>\n\t</li>\n\t<li id=\"toc-See_also\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#See_also\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">4</span>See also</div>\n\t\t</a>\n\n\t\t<ul id=\"toc-See_also-sublist\" class=\"vector-toc-list\">\n\t\t</ul>\n\t</li>\n\t<li id=\"toc-References\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#References\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">5</span>References</div>\n\t\t</a>\n\n\t\t<ul id=\"toc-References-sublist\" class=\"vector-toc-list\">\n\t\t</ul>\n\t</li>\n\t<li id=\"toc-External_links\"\n\t\tclass=\"vector-toc-list-item vector-toc-level-1\">\n\t\t<a class=\"vector-toc-link\" href=\"#External_links\">\n\t\t\t<div class=\"vector-toc-text\">\n\t\t\t<span class=\"vector-toc-numb\">6</span>External links</div>\n\t\t</a>\n\n\t\t<ul id=\"toc-External_links-sublist\" class=\"vector-toc-list\">\n\t\t</ul>\n\t</li>\n</ul>\n</div>\n\n\t\t\t\t\t</div>\n\t\t</nav>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"mw-content-container\">\n\t\t\t<main id=\"content\" class=\"mw-body\" role=\"main\">\n\t\t\t\t<header class=\"mw-body-header vector-page-titlebar\">\n\t\t\t\t\t<nav role=\"navigation\" aria-label=\"Contents\" class=\"vector-toc-landmark\">\n\n<div id=\"vector-page-titlebar-toc\" class=\"vector-dropdown vector-page-titlebar-toc vector-button-flush-left\"  >\n\t<input type=\"checkbox\" id=\"vector-page-titlebar-toc-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-page-titlebar-toc\" class=\"vector-dropdown-checkbox \"  aria-label=\"Toggle the table of contents\"  >\n\t<label id=\"vector-page-titlebar-toc-label\" for=\"vector-page-titlebar-toc-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only \" aria-hidden=\"true\"  ><span class=\"vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet\"></span>\n\n<span class=\"vector-dropdown-label-text\">Toggle the table of contents</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\n\t\t\t\t\t\t\t<div id=\"vector-page-titlebar-toc-unpinned-container\" class=\"vector-unpinned-container\">\n\t\t\t</div>\n\n\t</div>\n</div>\n\n\t\t\t\t\t</nav>\n\t\t\t\t\t<h1 id=\"firstHeading\" class=\"firstHeading mw-first-heading\"><span class=\"mw-page-title-main\">Microsoft</span></h1>\n\n<div id=\"p-lang-btn\" class=\"vector-dropdown mw-portlet mw-portlet-lang\"  >\n\t<input type=\"checkbox\" id=\"p-lang-btn-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-p-lang-btn\" class=\"vector-dropdown-checkbox mw-interlanguage-selector\" aria-label=\"Go to an article in another language. Available in 154 languages\"   >\n\t<label id=\"p-lang-btn-label\" for=\"p-lang-btn-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-154\" aria-hidden=\"true\"  ><span class=\"vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive\"></span>\n\n<span class=\"vector-dropdown-label-text\">154 languages</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\t\t<div class=\"vector-menu-content\">\n\n\t\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t\t<li class=\"interlanguage-link interwiki-af mw-list-item\"><a href=\"https://af.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Afrikaans\" lang=\"af\" hreflang=\"af\" class=\"interlanguage-link-target\"><span>Afrikaans</span></a></li><li class=\"interlanguage-link interwiki-als mw-list-item\"><a href=\"https://als.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Alemannic\" lang=\"gsw\" hreflang=\"gsw\" class=\"interlanguage-link-target\"><span>Alemannisch</span></a></li><li class=\"interlanguage-link interwiki-am mw-list-item\"><a href=\"https://am.wikipedia.org/wiki/%E1%88%9B%E1%8B%AD%E1%8A%AD%E1%88%AE%E1%88%B6%E1%8D%8D%E1%89%B5\" title=\"ማይክሮሶፍት – Amharic\" lang=\"am\" hreflang=\"am\" class=\"interlanguage-link-target\"><span>አማርኛ</span></a></li><li class=\"interlanguage-link interwiki-ang mw-list-item\"><a href=\"https://ang.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Old English\" lang=\"ang\" hreflang=\"ang\" class=\"interlanguage-link-target\"><span>Ænglisc</span></a></li><li class=\"interlanguage-link interwiki-ar mw-list-item\"><a href=\"https://ar.wikipedia.org/wiki/%D9%85%D8%A7%D9%8A%D9%83%D8%B1%D9%88%D8%B3%D9%88%D9%81%D8%AA\" title=\"مايكروسوفت – Arabic\" lang=\"ar\" hreflang=\"ar\" class=\"interlanguage-link-target\"><span>العربية</span></a></li><li class=\"interlanguage-link interwiki-an mw-list-item\"><a href=\"https://an.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Aragonese\" lang=\"an\" hreflang=\"an\" class=\"interlanguage-link-target\"><span>Aragonés</span></a></li><li class=\"interlanguage-link interwiki-ast mw-list-item\"><a href=\"https://ast.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Asturian\" lang=\"ast\" hreflang=\"ast\" class=\"interlanguage-link-target\"><span>Asturianu</span></a></li><li class=\"interlanguage-link interwiki-az mw-list-item\"><a href=\"https://az.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Azerbaijani\" lang=\"az\" hreflang=\"az\" class=\"interlanguage-link-target\"><span>Azərbaycanca</span></a></li><li class=\"interlanguage-link interwiki-azb mw-list-item\"><a href=\"https://azb.wikipedia.org/wiki/%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D8%AA\" title=\"مایکروسافت – South Azerbaijani\" lang=\"azb\" hreflang=\"azb\" class=\"interlanguage-link-target\"><span>تۆرکجه</span></a></li><li class=\"interlanguage-link interwiki-bn mw-list-item\"><a href=\"https://bn.wikipedia.org/wiki/%E0%A6%AE%E0%A6%BE%E0%A6%87%E0%A6%95%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%B8%E0%A6%AB%E0%A6%9F_%E0%A6%95%E0%A6%B0%E0%A7%8D%E0%A6%AA%E0%A7%8B%E0%A6%B0%E0%A7%87%E0%A6%B6%E0%A6%A8\" title=\"মাইক্রোসফট কর্পোরেশন – Bangla\" lang=\"bn\" hreflang=\"bn\" class=\"interlanguage-link-target\"><span>বাংলা</span></a></li><li class=\"interlanguage-link interwiki-zh-min-nan mw-list-item\"><a href=\"https://zh-min-nan.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Minnan\" lang=\"nan\" hreflang=\"nan\" class=\"interlanguage-link-target\"><span>Bân-lâm-gú</span></a></li><li class=\"interlanguage-link interwiki-map-bms mw-list-item\"><a href=\"https://map-bms.wikipedia.org/wiki/Microsoft_Corporation\" title=\"Microsoft Corporation – Basa Banyumasan\" lang=\"jv-x-bms\" hreflang=\"jv-x-bms\" class=\"interlanguage-link-target\"><span>Basa Banyumasan</span></a></li><li class=\"interlanguage-link interwiki-ba badge-Q17437796 badge-featuredarticle mw-list-item\" title=\"featured article badge\"><a href=\"https://ba.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Bashkir\" lang=\"ba\" hreflang=\"ba\" class=\"interlanguage-link-target\"><span>Башҡортса</span></a></li><li class=\"interlanguage-link interwiki-be mw-list-item\"><a href=\"https://be.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Belarusian\" lang=\"be\" hreflang=\"be\" class=\"interlanguage-link-target\"><span>Беларуская</span></a></li><li class=\"interlanguage-link interwiki-be-x-old mw-list-item\"><a href=\"https://be-tarask.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B9%D0%BA%D1%80%D0%B0%D1%81%D0%BE%D1%84%D1%82\" title=\"Майкрасофт – Belarusian (Taraškievica orthography)\" lang=\"be-tarask\" hreflang=\"be-tarask\" class=\"interlanguage-link-target\"><span>Беларуская (тарашкевіца)</span></a></li><li class=\"interlanguage-link interwiki-bh mw-list-item\"><a href=\"https://bh.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A4%BE%E0%A4%AB%E0%A5%8D%E0%A4%9F\" title=\"माइक्रोसाफ्ट – Bhojpuri\" lang=\"bh\" hreflang=\"bh\" class=\"interlanguage-link-target\"><span>भोजपुरी</span></a></li><li class=\"interlanguage-link interwiki-bg mw-list-item\"><a href=\"https://bg.wikipedia.org/wiki/%D0%9C%D0%B0%D0%B9%D0%BA%D1%80%D0%BE%D1%81%D0%BE%D1%84%D1%82\" title=\"Майкрософт – Bulgarian\" lang=\"bg\" hreflang=\"bg\" class=\"interlanguage-link-target\"><span>Български</span></a></li><li class=\"interlanguage-link interwiki-bar mw-list-item\"><a href=\"https://bar.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Bavarian\" lang=\"bar\" hreflang=\"bar\" class=\"interlanguage-link-target\"><span>Boarisch</span></a></li><li class=\"interlanguage-link interwiki-bs badge-Q17437796 badge-featuredarticle mw-list-item\" title=\"featured article badge\"><a href=\"https://bs.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Bosnian\" lang=\"bs\" hreflang=\"bs\" class=\"interlanguage-link-target\"><span>Bosanski</span></a></li><li class=\"interlanguage-link interwiki-br mw-list-item\"><a href=\"https://br.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Breton\" lang=\"br\" hreflang=\"br\" class=\"interlanguage-link-target\"><span>Brezhoneg</span></a></li><li class=\"interlanguage-link interwiki-ca mw-list-item\"><a href=\"https://ca.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Catalan\" lang=\"ca\" hreflang=\"ca\" class=\"interlanguage-link-target\"><span>Català</span></a></li><li class=\"interlanguage-link interwiki-ceb mw-list-item\"><a href=\"https://ceb.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Cebuano\" lang=\"ceb\" hreflang=\"ceb\" class=\"interlanguage-link-target\"><span>Cebuano</span></a></li><li class=\"interlanguage-link interwiki-cs mw-list-item\"><a href=\"https://cs.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Czech\" lang=\"cs\" hreflang=\"cs\" class=\"interlanguage-link-target\"><span>Čeština</span></a></li><li class=\"interlanguage-link interwiki-cy mw-list-item\"><a href=\"https://cy.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Welsh\" lang=\"cy\" hreflang=\"cy\" class=\"interlanguage-link-target\"><span>Cymraeg</span></a></li><li class=\"interlanguage-link interwiki-da mw-list-item\"><a href=\"https://da.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Danish\" lang=\"da\" hreflang=\"da\" class=\"interlanguage-link-target\"><span>Dansk</span></a></li><li class=\"interlanguage-link interwiki-ary mw-list-item\"><a href=\"https://ary.wikipedia.org/wiki/%D9%85%D8%A7%D9%8A%D9%83%D8%B1%D9%88%D8%B5%D9%88%D9%81%D8%AA\" title=\"مايكروصوفت – Moroccan Arabic\" lang=\"ary\" hreflang=\"ary\" class=\"interlanguage-link-target\"><span>الدارجة</span></a></li><li class=\"interlanguage-link interwiki-de mw-list-item\"><a href=\"https://de.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – German\" lang=\"de\" hreflang=\"de\" class=\"interlanguage-link-target\"><span>Deutsch</span></a></li><li class=\"interlanguage-link interwiki-dv mw-list-item\"><a href=\"https://dv.wikipedia.org/wiki/%DE%89%DE%A6%DE%87%DE%A8%DE%86%DE%B0%DE%83%DE%AF%DE%90%DE%AE%DE%8A%DE%B0%DE%93%DE%B0\" title=\"މައިކްރޯސޮފްޓް – Divehi\" lang=\"dv\" hreflang=\"dv\" class=\"interlanguage-link-target\"><span>ދިވެހިބަސް</span></a></li><li class=\"interlanguage-link interwiki-et mw-list-item\"><a href=\"https://et.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Estonian\" lang=\"et\" hreflang=\"et\" class=\"interlanguage-link-target\"><span>Eesti</span></a></li><li class=\"interlanguage-link interwiki-el mw-list-item\"><a href=\"https://el.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Greek\" lang=\"el\" hreflang=\"el\" class=\"interlanguage-link-target\"><span>Ελληνικά</span></a></li><li class=\"interlanguage-link interwiki-es mw-list-item\"><a href=\"https://es.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Spanish\" lang=\"es\" hreflang=\"es\" class=\"interlanguage-link-target\"><span>Español</span></a></li><li class=\"interlanguage-link interwiki-eo mw-list-item\"><a href=\"https://eo.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Esperanto\" lang=\"eo\" hreflang=\"eo\" class=\"interlanguage-link-target\"><span>Esperanto</span></a></li><li class=\"interlanguage-link interwiki-ext mw-list-item\"><a href=\"https://ext.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Extremaduran\" lang=\"ext\" hreflang=\"ext\" class=\"interlanguage-link-target\"><span>Estremeñu</span></a></li><li class=\"interlanguage-link interwiki-eu mw-list-item\"><a href=\"https://eu.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Basque\" lang=\"eu\" hreflang=\"eu\" class=\"interlanguage-link-target\"><span>Euskara</span></a></li><li class=\"interlanguage-link interwiki-fa mw-list-item\"><a href=\"https://fa.wikipedia.org/wiki/%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D8%AA\" title=\"مایکروسافت – Persian\" lang=\"fa\" hreflang=\"fa\" class=\"interlanguage-link-target\"><span>فارسی</span></a></li><li class=\"interlanguage-link interwiki-fr mw-list-item\"><a href=\"https://fr.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – French\" lang=\"fr\" hreflang=\"fr\" class=\"interlanguage-link-target\"><span>Français</span></a></li><li class=\"interlanguage-link interwiki-fy mw-list-item\"><a href=\"https://fy.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Western Frisian\" lang=\"fy\" hreflang=\"fy\" class=\"interlanguage-link-target\"><span>Frysk</span></a></li><li class=\"interlanguage-link interwiki-ga mw-list-item\"><a href=\"https://ga.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Irish\" lang=\"ga\" hreflang=\"ga\" class=\"interlanguage-link-target\"><span>Gaeilge</span></a></li><li class=\"interlanguage-link interwiki-gl mw-list-item\"><a href=\"https://gl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Galician\" lang=\"gl\" hreflang=\"gl\" class=\"interlanguage-link-target\"><span>Galego</span></a></li><li class=\"interlanguage-link interwiki-gan mw-list-item\"><a href=\"https://gan.wikipedia.org/wiki/%E5%BE%AE%E8%BB%9F\" title=\"微軟 – Gan\" lang=\"gan\" hreflang=\"gan\" class=\"interlanguage-link-target\"><span>贛語</span></a></li><li class=\"interlanguage-link interwiki-ki mw-list-item\"><a href=\"https://ki.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kikuyu\" lang=\"ki\" hreflang=\"ki\" class=\"interlanguage-link-target\"><span>Gĩkũyũ</span></a></li><li class=\"interlanguage-link interwiki-gu mw-list-item\"><a href=\"https://gu.wikipedia.org/wiki/%E0%AA%AE%E0%AA%BE%E0%AA%87%E0%AA%95%E0%AB%8D%E0%AA%B0%E0%AB%8B%E0%AA%B8%E0%AB%8B%E0%AA%AB%E0%AB%8D%E0%AA%9F\" title=\"માઇક્રોસોફ્ટ – Gujarati\" lang=\"gu\" hreflang=\"gu\" class=\"interlanguage-link-target\"><span>ગુજરાતી</span></a></li><li class=\"interlanguage-link interwiki-hak mw-list-item\"><a href=\"https://hak.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Hakka Chinese\" lang=\"hak\" hreflang=\"hak\" class=\"interlanguage-link-target\"><span>客家語/Hak-kâ-ngî</span></a></li><li class=\"interlanguage-link interwiki-ko mw-list-item\"><a href=\"https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%86%8C%ED%94%84%ED%8A%B8\" title=\"마이크로소프트 – Korean\" lang=\"ko\" hreflang=\"ko\" class=\"interlanguage-link-target\"><span>한국어</span></a></li><li class=\"interlanguage-link interwiki-ha mw-list-item\"><a href=\"https://ha.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Hausa\" lang=\"ha\" hreflang=\"ha\" class=\"interlanguage-link-target\"><span>Hausa</span></a></li><li class=\"interlanguage-link interwiki-hy mw-list-item\"><a href=\"https://hy.wikipedia.org/wiki/%D5%84%D5%A1%D5%B5%D6%84%D6%80%D5%B8%D5%BD%D5%B8%D6%86%D5%A9\" title=\"Մայքրոսոֆթ – Armenian\" lang=\"hy\" hreflang=\"hy\" class=\"interlanguage-link-target\"><span>Հայերեն</span></a></li><li class=\"interlanguage-link interwiki-hi mw-list-item\"><a href=\"https://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A5%89%E0%A4%AB%E0%A4%BC%E0%A5%8D%E0%A4%9F\" title=\"माइक्रोसॉफ़्ट – Hindi\" lang=\"hi\" hreflang=\"hi\" class=\"interlanguage-link-target\"><span>हिन्दी</span></a></li><li class=\"interlanguage-link interwiki-hr mw-list-item\"><a href=\"https://hr.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Croatian\" lang=\"hr\" hreflang=\"hr\" class=\"interlanguage-link-target\"><span>Hrvatski</span></a></li><li class=\"interlanguage-link interwiki-io mw-list-item\"><a href=\"https://io.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Ido\" lang=\"io\" hreflang=\"io\" class=\"interlanguage-link-target\"><span>Ido</span></a></li><li class=\"interlanguage-link interwiki-ilo mw-list-item\"><a href=\"https://ilo.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Iloko\" lang=\"ilo\" hreflang=\"ilo\" class=\"interlanguage-link-target\"><span>Ilokano</span></a></li><li class=\"interlanguage-link interwiki-id mw-list-item\"><a href=\"https://id.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Indonesian\" lang=\"id\" hreflang=\"id\" class=\"interlanguage-link-target\"><span>Bahasa Indonesia</span></a></li><li class=\"interlanguage-link interwiki-ia mw-list-item\"><a href=\"https://ia.wikipedia.org/wiki/Microsoft_Corporation\" title=\"Microsoft Corporation – Interlingua\" lang=\"ia\" hreflang=\"ia\" class=\"interlanguage-link-target\"><span>Interlingua</span></a></li><li class=\"interlanguage-link interwiki-is mw-list-item\"><a href=\"https://is.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Icelandic\" lang=\"is\" hreflang=\"is\" class=\"interlanguage-link-target\"><span>Íslenska</span></a></li><li class=\"interlanguage-link interwiki-it mw-list-item\"><a href=\"https://it.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Italian\" lang=\"it\" hreflang=\"it\" class=\"interlanguage-link-target\"><span>Italiano</span></a></li><li class=\"interlanguage-link interwiki-he mw-list-item\"><a href=\"https://he.wikipedia.org/wiki/%D7%9E%D7%99%D7%A7%D7%A8%D7%95%D7%A1%D7%95%D7%A4%D7%98\" title=\"מיקרוסופט – Hebrew\" lang=\"he\" hreflang=\"he\" class=\"interlanguage-link-target\"><span>עברית</span></a></li><li class=\"interlanguage-link interwiki-jv mw-list-item\"><a href=\"https://jv.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Javanese\" lang=\"jv\" hreflang=\"jv\" class=\"interlanguage-link-target\"><span>Jawa</span></a></li><li class=\"interlanguage-link interwiki-kn mw-list-item\"><a href=\"https://kn.wikipedia.org/wiki/%E0%B2%AE%E0%B3%88%E0%B2%95%E0%B3%8D%E0%B2%B0%E0%B3%8B%E0%B2%B8%E0%B2%BE%E0%B2%AB%E0%B3%8D%E0%B2%9F%E0%B3%8D\" title=\"ಮೈಕ್ರೋಸಾಫ್ಟ್ – Kannada\" lang=\"kn\" hreflang=\"kn\" class=\"interlanguage-link-target\"><span>ಕನ್ನಡ</span></a></li><li class=\"interlanguage-link interwiki-ka mw-list-item\"><a href=\"https://ka.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Georgian\" lang=\"ka\" hreflang=\"ka\" class=\"interlanguage-link-target\"><span>ქართული</span></a></li><li class=\"interlanguage-link interwiki-kk mw-list-item\"><a href=\"https://kk.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kazakh\" lang=\"kk\" hreflang=\"kk\" class=\"interlanguage-link-target\"><span>Қазақша</span></a></li><li class=\"interlanguage-link interwiki-sw badge-Q17437796 badge-featuredarticle mw-list-item\" title=\"featured article badge\"><a href=\"https://sw.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Swahili\" lang=\"sw\" hreflang=\"sw\" class=\"interlanguage-link-target\"><span>Kiswahili</span></a></li><li class=\"interlanguage-link interwiki-ht mw-list-item\"><a href=\"https://ht.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Haitian Creole\" lang=\"ht\" hreflang=\"ht\" class=\"interlanguage-link-target\"><span>Kreyòl ayisyen</span></a></li><li class=\"interlanguage-link interwiki-ku mw-list-item\"><a href=\"https://ku.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kurdish\" lang=\"ku\" hreflang=\"ku\" class=\"interlanguage-link-target\"><span>Kurdî</span></a></li><li class=\"interlanguage-link interwiki-ky mw-list-item\"><a href=\"https://ky.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kyrgyz\" lang=\"ky\" hreflang=\"ky\" class=\"interlanguage-link-target\"><span>Кыргызча</span></a></li><li class=\"interlanguage-link interwiki-lo mw-list-item\"><a href=\"https://lo.wikipedia.org/wiki/%E0%BB%84%E0%BA%A1%E0%BB%82%E0%BA%84%E0%BA%A3%E0%BA%8A%E0%BA%AD%E0%BA%9A\" title=\"ໄມໂຄຣຊອບ – Lao\" lang=\"lo\" hreflang=\"lo\" class=\"interlanguage-link-target\"><span>ລາວ</span></a></li><li class=\"interlanguage-link interwiki-la mw-list-item\"><a href=\"https://la.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Latin\" lang=\"la\" hreflang=\"la\" class=\"interlanguage-link-target\"><span>Latina</span></a></li><li class=\"interlanguage-link interwiki-lv mw-list-item\"><a href=\"https://lv.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Latvian\" lang=\"lv\" hreflang=\"lv\" class=\"interlanguage-link-target\"><span>Latviešu</span></a></li><li class=\"interlanguage-link interwiki-lt mw-list-item\"><a href=\"https://lt.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Lithuanian\" lang=\"lt\" hreflang=\"lt\" class=\"interlanguage-link-target\"><span>Lietuvių</span></a></li><li class=\"interlanguage-link interwiki-lij mw-list-item\"><a href=\"https://lij.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Ligurian\" lang=\"lij\" hreflang=\"lij\" class=\"interlanguage-link-target\"><span>Ligure</span></a></li><li class=\"interlanguage-link interwiki-ln mw-list-item\"><a href=\"https://ln.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Lingala\" lang=\"ln\" hreflang=\"ln\" class=\"interlanguage-link-target\"><span>Lingála</span></a></li><li class=\"interlanguage-link interwiki-jbo mw-list-item\"><a href=\"https://jbo.wikipedia.org/wiki/maikrosaft\" title=\"maikrosaft – Lojban\" lang=\"jbo\" hreflang=\"jbo\" class=\"interlanguage-link-target\"><span>La .lojban.</span></a></li><li class=\"interlanguage-link interwiki-lmo mw-list-item\"><a href=\"https://lmo.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Lombard\" lang=\"lmo\" hreflang=\"lmo\" class=\"interlanguage-link-target\"><span>Lombard</span></a></li><li class=\"interlanguage-link interwiki-hu mw-list-item\"><a href=\"https://hu.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Hungarian\" lang=\"hu\" hreflang=\"hu\" class=\"interlanguage-link-target\"><span>Magyar</span></a></li><li class=\"interlanguage-link interwiki-mai mw-list-item\"><a href=\"https://mai.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A4%AB%E0%A5%8D%E0%A4%9F\" title=\"माइक्रोसफ्ट – Maithili\" lang=\"mai\" hreflang=\"mai\" class=\"interlanguage-link-target\"><span>मैथिली</span></a></li><li class=\"interlanguage-link interwiki-mk mw-list-item\"><a href=\"https://mk.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Macedonian\" lang=\"mk\" hreflang=\"mk\" class=\"interlanguage-link-target\"><span>Македонски</span></a></li><li class=\"interlanguage-link interwiki-ml mw-list-item\"><a href=\"https://ml.wikipedia.org/wiki/%E0%B4%AE%E0%B5%88%E0%B4%95%E0%B5%8D%E0%B4%B0%E0%B5%8B%E0%B4%B8%E0%B5%8B%E0%B4%AB%E0%B5%8D%E0%B4%B1%E0%B5%8D%E0%B4%B1%E0%B5%8D\" title=\"മൈക്രോസോഫ്റ്റ് – Malayalam\" lang=\"ml\" hreflang=\"ml\" class=\"interlanguage-link-target\"><span>മലയാളം</span></a></li><li class=\"interlanguage-link interwiki-mt mw-list-item\"><a href=\"https://mt.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Maltese\" lang=\"mt\" hreflang=\"mt\" class=\"interlanguage-link-target\"><span>Malti</span></a></li><li class=\"interlanguage-link interwiki-mi mw-list-item\"><a href=\"https://mi.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Māori\" lang=\"mi\" hreflang=\"mi\" class=\"interlanguage-link-target\"><span>Māori</span></a></li><li class=\"interlanguage-link interwiki-mr mw-list-item\"><a href=\"https://mr.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%AF%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A5%89%E0%A4%AB%E0%A5%8D%E0%A4%9F_%E0%A4%95%E0%A5%89%E0%A4%B0%E0%A5%8D%E0%A4%AA%E0%A5%8B%E0%A4%B0%E0%A5%87%E0%A4%B6%E0%A4%A8\" title=\"मायक्रोसॉफ्ट कॉर्पोरेशन – Marathi\" lang=\"mr\" hreflang=\"mr\" class=\"interlanguage-link-target\"><span>मराठी</span></a></li><li class=\"interlanguage-link interwiki-xmf mw-list-item\"><a href=\"https://xmf.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Mingrelian\" lang=\"xmf\" hreflang=\"xmf\" class=\"interlanguage-link-target\"><span>მარგალური</span></a></li><li class=\"interlanguage-link interwiki-arz mw-list-item\"><a href=\"https://arz.wikipedia.org/wiki/%D9%85%D8%A7%D9%8A%D9%83%D8%B1%D9%88%D8%B3%D9%88%D9%81%D8%AA\" title=\"مايكروسوفت – Egyptian Arabic\" lang=\"arz\" hreflang=\"arz\" class=\"interlanguage-link-target\"><span>مصرى</span></a></li><li class=\"interlanguage-link interwiki-mnw mw-list-item\"><a href=\"https://mnw.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Mon\" lang=\"mnw\" hreflang=\"mnw\" class=\"interlanguage-link-target\"><span>ဘာသာမန်</span></a></li><li class=\"interlanguage-link interwiki-ms mw-list-item\"><a href=\"https://ms.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Malay\" lang=\"ms\" hreflang=\"ms\" class=\"interlanguage-link-target\"><span>Bahasa Melayu</span></a></li><li class=\"interlanguage-link interwiki-min mw-list-item\"><a href=\"https://min.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Minangkabau\" lang=\"min\" hreflang=\"min\" class=\"interlanguage-link-target\"><span>Minangkabau</span></a></li><li class=\"interlanguage-link interwiki-cdo mw-list-item\"><a href=\"https://cdo.wikipedia.org/wiki/M%C3%AC-ni%C5%8Dng\" title=\"Mì-niōng – Mindong\" lang=\"cdo\" hreflang=\"cdo\" class=\"interlanguage-link-target\"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class=\"interlanguage-link interwiki-mn mw-list-item\"><a href=\"https://mn.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Mongolian\" lang=\"mn\" hreflang=\"mn\" class=\"interlanguage-link-target\"><span>Монгол</span></a></li><li class=\"interlanguage-link interwiki-my mw-list-item\"><a href=\"https://my.wikipedia.org/wiki/%E1%80%99%E1%80%AD%E1%80%AF%E1%80%80%E1%80%BA%E1%80%81%E1%80%9B%E1%80%AD%E1%80%AF%E1%80%86%E1%80%B1%E1%80%AC%E1%80%B7%E1%80%96%E1%80%BA\" title=\"မိုက်ခရိုဆော့ဖ် – Burmese\" lang=\"my\" hreflang=\"my\" class=\"interlanguage-link-target\"><span>မြန်မာဘာသာ</span></a></li><li class=\"interlanguage-link interwiki-fj mw-list-item\"><a href=\"https://fj.wikipedia.org/wiki/Na_Microsoft\" title=\"Na Microsoft – Fijian\" lang=\"fj\" hreflang=\"fj\" class=\"interlanguage-link-target\"><span>Na Vosa Vakaviti</span></a></li><li class=\"interlanguage-link interwiki-nl mw-list-item\"><a href=\"https://nl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Dutch\" lang=\"nl\" hreflang=\"nl\" class=\"interlanguage-link-target\"><span>Nederlands</span></a></li><li class=\"interlanguage-link interwiki-ne mw-list-item\"><a href=\"https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A4%AB%E0%A5%8D%E0%A4%9F\" title=\"माइक्रोसफ्ट – Nepali\" lang=\"ne\" hreflang=\"ne\" class=\"interlanguage-link-target\"><span>नेपाली</span></a></li><li class=\"interlanguage-link interwiki-new mw-list-item\"><a href=\"https://new.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A4%AB%E0%A5%8D%E0%A4%9F\" title=\"माइक्रोसफ्ट – Newari\" lang=\"new\" hreflang=\"new\" class=\"interlanguage-link-target\"><span>नेपाल भाषा</span></a></li><li class=\"interlanguage-link interwiki-ja mw-list-item\"><a href=\"https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88\" title=\"マイクロソフト – Japanese\" lang=\"ja\" hreflang=\"ja\" class=\"interlanguage-link-target\"><span>日本語</span></a></li><li class=\"interlanguage-link interwiki-nqo mw-list-item\"><a href=\"https://nqo.wikipedia.org/wiki/%DF%A1%DF%8C%DF%9E%DF%99%DF%8F%DF%9B%DF%90%DF%9D%DF%95\" title=\"ߡߌߞߙߏߛߐߝߕ – N’Ko\" lang=\"nqo\" hreflang=\"nqo\" class=\"interlanguage-link-target\"><span>ߒߞߏ</span></a></li><li class=\"interlanguage-link interwiki-no mw-list-item\"><a href=\"https://no.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Norwegian Bokmål\" lang=\"nb\" hreflang=\"nb\" class=\"interlanguage-link-target\"><span>Norsk bokmål</span></a></li><li class=\"interlanguage-link interwiki-nn mw-list-item\"><a href=\"https://nn.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Norwegian Nynorsk\" lang=\"nn\" hreflang=\"nn\" class=\"interlanguage-link-target\"><span>Norsk nynorsk</span></a></li><li class=\"interlanguage-link interwiki-oc mw-list-item\"><a href=\"https://oc.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Occitan\" lang=\"oc\" hreflang=\"oc\" class=\"interlanguage-link-target\"><span>Occitan</span></a></li><li class=\"interlanguage-link interwiki-or mw-list-item\"><a href=\"https://or.wikipedia.org/wiki/%E0%AC%AE%E0%AC%BE%E0%AC%87%E0%AC%95%E0%AD%8D%E0%AC%B0%E0%AD%8B%E0%AC%B8%E0%AC%AB%E0%AD%8D%E0%AC%9F\" title=\"ମାଇକ୍ରୋସଫ୍ଟ – Odia\" lang=\"or\" hreflang=\"or\" class=\"interlanguage-link-target\"><span>ଓଡ଼ିଆ</span></a></li><li class=\"interlanguage-link interwiki-uz mw-list-item\"><a href=\"https://uz.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Uzbek\" lang=\"uz\" hreflang=\"uz\" class=\"interlanguage-link-target\"><span>Oʻzbekcha / ўзбекча</span></a></li><li class=\"interlanguage-link interwiki-pa mw-list-item\"><a href=\"https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A8%BE%E0%A8%88%E0%A8%95%E0%A9%8D%E0%A8%B0%E0%A9%8B%E0%A8%B8%E0%A8%BE%E0%A8%AB%E0%A8%9F\" title=\"ਮਾਈਕ੍ਰੋਸਾਫਟ – Punjabi\" lang=\"pa\" hreflang=\"pa\" class=\"interlanguage-link-target\"><span>ਪੰਜਾਬੀ</span></a></li><li class=\"interlanguage-link interwiki-pnb mw-list-item\"><a href=\"https://pnb.wikipedia.org/wiki/%D9%85%D8%A7%D8%A6%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D9%88%D9%81%D9%B9\" title=\"مائیکروسوفٹ – Western Punjabi\" lang=\"pnb\" hreflang=\"pnb\" class=\"interlanguage-link-target\"><span>پنجابی</span></a></li><li class=\"interlanguage-link interwiki-ps mw-list-item\"><a href=\"https://ps.wikipedia.org/wiki/%D9%85%D8%A7%D9%8A%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D9%BC\" title=\"مايکروسافټ – Pashto\" lang=\"ps\" hreflang=\"ps\" class=\"interlanguage-link-target\"><span>پښتو</span></a></li><li class=\"interlanguage-link interwiki-km mw-list-item\"><a href=\"https://km.wikipedia.org/wiki/%E1%9E%98%E1%9E%B8%E1%9E%80%E1%9F%92%E1%9E%9A%E1%9E%BC%E1%9E%9F%E1%9E%BC%E1%9E%94\" title=\"មីក្រូសូប – Khmer\" lang=\"km\" hreflang=\"km\" class=\"interlanguage-link-target\"><span>ភាសាខ្មែរ</span></a></li><li class=\"interlanguage-link interwiki-pms mw-list-item\"><a href=\"https://pms.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Piedmontese\" lang=\"pms\" hreflang=\"pms\" class=\"interlanguage-link-target\"><span>Piemontèis</span></a></li><li class=\"interlanguage-link interwiki-nds mw-list-item\"><a href=\"https://nds.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Low German\" lang=\"nds\" hreflang=\"nds\" class=\"interlanguage-link-target\"><span>Plattdüütsch</span></a></li><li class=\"interlanguage-link interwiki-pl mw-list-item\"><a href=\"https://pl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Polish\" lang=\"pl\" hreflang=\"pl\" class=\"interlanguage-link-target\"><span>Polski</span></a></li><li class=\"interlanguage-link interwiki-pt mw-list-item\"><a href=\"https://pt.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Portuguese\" lang=\"pt\" hreflang=\"pt\" class=\"interlanguage-link-target\"><span>Português</span></a></li><li class=\"interlanguage-link interwiki-kaa mw-list-item\"><a href=\"https://kaa.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kara-Kalpak\" lang=\"kaa\" hreflang=\"kaa\" class=\"interlanguage-link-target\"><span>Qaraqalpaqsha</span></a></li><li class=\"interlanguage-link interwiki-ro mw-list-item\"><a href=\"https://ro.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Romanian\" lang=\"ro\" hreflang=\"ro\" class=\"interlanguage-link-target\"><span>Română</span></a></li><li class=\"interlanguage-link interwiki-qu mw-list-item\"><a href=\"https://qu.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Quechua\" lang=\"qu\" hreflang=\"qu\" class=\"interlanguage-link-target\"><span>Runa Simi</span></a></li><li class=\"interlanguage-link interwiki-rue mw-list-item\"><a href=\"https://rue.wikipedia.org/wiki/Microsoft_Corporation\" title=\"Microsoft Corporation – Rusyn\" lang=\"rue\" hreflang=\"rue\" class=\"interlanguage-link-target\"><span>Русиньскый</span></a></li><li class=\"interlanguage-link interwiki-ru mw-list-item\"><a href=\"https://ru.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Russian\" lang=\"ru\" hreflang=\"ru\" class=\"interlanguage-link-target\"><span>Русский</span></a></li><li class=\"interlanguage-link interwiki-sah mw-list-item\"><a href=\"https://sah.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Yakut\" lang=\"sah\" hreflang=\"sah\" class=\"interlanguage-link-target\"><span>Саха тыла</span></a></li><li class=\"interlanguage-link interwiki-sa mw-list-item\"><a href=\"https://sa.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BE%E0%A4%87%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%B8%E0%A4%BE%E0%A4%AB%E0%A5%8D%E0%A4%9F%E0%A5%8D\" title=\"माइक्रोसाफ्ट् – Sanskrit\" lang=\"sa\" hreflang=\"sa\" class=\"interlanguage-link-target\"><span>संस्कृतम्</span></a></li><li class=\"interlanguage-link interwiki-sat mw-list-item\"><a href=\"https://sat.wikipedia.org/wiki/%E1%B1%A2%E1%B1%9F%E1%B1%AD%E1%B1%A0%E1%B1%A8%E1%B1%9A%E1%B1%A5%E1%B1%9A%E1%B1%AF%E1%B1%B4\" title=\"ᱢᱟᱭᱠᱨᱚᱥᱚᱯᱴ – Santali\" lang=\"sat\" hreflang=\"sat\" class=\"interlanguage-link-target\"><span>ᱥᱟᱱᱛᱟᱲᱤ</span></a></li><li class=\"interlanguage-link interwiki-sco mw-list-item\"><a href=\"https://sco.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Scots\" lang=\"sco\" hreflang=\"sco\" class=\"interlanguage-link-target\"><span>Scots</span></a></li><li class=\"interlanguage-link interwiki-sq mw-list-item\"><a href=\"https://sq.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Albanian\" lang=\"sq\" hreflang=\"sq\" class=\"interlanguage-link-target\"><span>Shqip</span></a></li><li class=\"interlanguage-link interwiki-scn mw-list-item\"><a href=\"https://scn.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Sicilian\" lang=\"scn\" hreflang=\"scn\" class=\"interlanguage-link-target\"><span>Sicilianu</span></a></li><li class=\"interlanguage-link interwiki-si mw-list-item\"><a href=\"https://si.wikipedia.org/wiki/%E0%B6%B8%E0%B6%BA%E0%B7%92%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%9C%E0%B7%83%E0%B7%9C%E0%B7%86%E0%B7%8A%E0%B6%A7%E0%B7%8A\" title=\"මයික්‍රොසොෆ්ට් – Sinhala\" lang=\"si\" hreflang=\"si\" class=\"interlanguage-link-target\"><span>සිංහල</span></a></li><li class=\"interlanguage-link interwiki-simple mw-list-item\"><a href=\"https://simple.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Simple English\" lang=\"en-simple\" hreflang=\"en-simple\" class=\"interlanguage-link-target\"><span>Simple English</span></a></li><li class=\"interlanguage-link interwiki-sd mw-list-item\"><a href=\"https://sd.wikipedia.org/wiki/%D9%85%D8%A7%D8%A6%DA%AA%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D9%BD\" title=\"مائڪروسافٽ – Sindhi\" lang=\"sd\" hreflang=\"sd\" class=\"interlanguage-link-target\"><span>سنڌي</span></a></li><li class=\"interlanguage-link interwiki-sk mw-list-item\"><a href=\"https://sk.wikipedia.org/wiki/Microsoft_Corporation\" title=\"Microsoft Corporation – Slovak\" lang=\"sk\" hreflang=\"sk\" class=\"interlanguage-link-target\"><span>Slovenčina</span></a></li><li class=\"interlanguage-link interwiki-sl mw-list-item\"><a href=\"https://sl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Slovenian\" lang=\"sl\" hreflang=\"sl\" class=\"interlanguage-link-target\"><span>Slovenščina</span></a></li><li class=\"interlanguage-link interwiki-szl mw-list-item\"><a href=\"https://szl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Silesian\" lang=\"szl\" hreflang=\"szl\" class=\"interlanguage-link-target\"><span>Ślůnski</span></a></li><li class=\"interlanguage-link interwiki-so mw-list-item\"><a href=\"https://so.wikipedia.org/wiki/Maykorosofti\" title=\"Maykorosofti – Somali\" lang=\"so\" hreflang=\"so\" class=\"interlanguage-link-target\"><span>Soomaaliga</span></a></li><li class=\"interlanguage-link interwiki-ckb mw-list-item\"><a href=\"https://ckb.wikipedia.org/wiki/%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%DB%86%D8%B3%DB%86%D9%81%D8%AA\" title=\"مایکرۆسۆفت – Central Kurdish\" lang=\"ckb\" hreflang=\"ckb\" class=\"interlanguage-link-target\"><span>کوردی</span></a></li><li class=\"interlanguage-link interwiki-sr mw-list-item\"><a href=\"https://sr.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Serbian\" lang=\"sr\" hreflang=\"sr\" class=\"interlanguage-link-target\"><span>Српски / srpski</span></a></li><li class=\"interlanguage-link interwiki-sh mw-list-item\"><a href=\"https://sh.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Serbo-Croatian\" lang=\"sh\" hreflang=\"sh\" class=\"interlanguage-link-target\"><span>Srpskohrvatski / српскохрватски</span></a></li><li class=\"interlanguage-link interwiki-su mw-list-item\"><a href=\"https://su.wikipedia.org/wiki/Koporasi_Microsoft\" title=\"Koporasi Microsoft – Sundanese\" lang=\"su\" hreflang=\"su\" class=\"interlanguage-link-target\"><span>Sunda</span></a></li><li class=\"interlanguage-link interwiki-fi mw-list-item\"><a href=\"https://fi.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Finnish\" lang=\"fi\" hreflang=\"fi\" class=\"interlanguage-link-target\"><span>Suomi</span></a></li><li class=\"interlanguage-link interwiki-sv mw-list-item\"><a href=\"https://sv.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Swedish\" lang=\"sv\" hreflang=\"sv\" class=\"interlanguage-link-target\"><span>Svenska</span></a></li><li class=\"interlanguage-link interwiki-tl mw-list-item\"><a href=\"https://tl.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Tagalog\" lang=\"tl\" hreflang=\"tl\" class=\"interlanguage-link-target\"><span>Tagalog</span></a></li><li class=\"interlanguage-link interwiki-ta mw-list-item\"><a href=\"https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%88%E0%AE%95%E0%AF%8D%E0%AE%B0%E0%AF%8B%E0%AE%9A%E0%AE%BE%E0%AE%AA%E0%AF%8D%E0%AE%9F%E0%AF%8D\" title=\"மைக்ரோசாப்ட் – Tamil\" lang=\"ta\" hreflang=\"ta\" class=\"interlanguage-link-target\"><span>தமிழ்</span></a></li><li class=\"interlanguage-link interwiki-kab mw-list-item\"><a href=\"https://kab.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Kabyle\" lang=\"kab\" hreflang=\"kab\" class=\"interlanguage-link-target\"><span>Taqbaylit</span></a></li><li class=\"interlanguage-link interwiki-tt mw-list-item\"><a href=\"https://tt.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Tatar\" lang=\"tt\" hreflang=\"tt\" class=\"interlanguage-link-target\"><span>Татарча / tatarça</span></a></li><li class=\"interlanguage-link interwiki-shn mw-list-item\"><a href=\"https://shn.wikipedia.org/wiki/%E1%80%99%E1%81%A2%E1%82%86%E1%82%89%E1%81%B6%E1%80%9B%E1%80%B0%E1%80%9D%E1%80%BA%E1%82%87%E1%80%9E%E1%80%BD%E1%80%95%E1%80%BA%E1%82%89%E1%81%BE%E1%80%BA\" title=\"မၢႆႉၶရူဝ်ႇသွပ်ႉၾ် – Shan\" lang=\"shn\" hreflang=\"shn\" class=\"interlanguage-link-target\"><span>ၽႃႇသႃႇတႆး </span></a></li><li class=\"interlanguage-link interwiki-te mw-list-item\"><a href=\"https://te.wikipedia.org/wiki/%E0%B0%AE%E0%B1%88%E0%B0%95%E0%B1%8D%E0%B0%B0%E0%B1%8B%E0%B0%B8%E0%B0%BE%E0%B0%AB%E0%B1%8D%E0%B0%9F%E0%B1%8D\" title=\"మైక్రోసాఫ్ట్ – Telugu\" lang=\"te\" hreflang=\"te\" class=\"interlanguage-link-target\"><span>తెలుగు</span></a></li><li class=\"interlanguage-link interwiki-th mw-list-item\"><a href=\"https://th.wikipedia.org/wiki/%E0%B9%84%E0%B8%A1%E0%B9%82%E0%B8%84%E0%B8%A3%E0%B8%8B%E0%B8%AD%E0%B8%9F%E0%B8%97%E0%B9%8C\" title=\"ไมโครซอฟท์ – Thai\" lang=\"th\" hreflang=\"th\" class=\"interlanguage-link-target\"><span>ไทย</span></a></li><li class=\"interlanguage-link interwiki-tg mw-list-item\"><a href=\"https://tg.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Tajik\" lang=\"tg\" hreflang=\"tg\" class=\"interlanguage-link-target\"><span>Тоҷикӣ</span></a></li><li class=\"interlanguage-link interwiki-tr mw-list-item\"><a href=\"https://tr.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Turkish\" lang=\"tr\" hreflang=\"tr\" class=\"interlanguage-link-target\"><span>Türkçe</span></a></li><li class=\"interlanguage-link interwiki-tk mw-list-item\"><a href=\"https://tk.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Turkmen\" lang=\"tk\" hreflang=\"tk\" class=\"interlanguage-link-target\"><span>Türkmençe</span></a></li><li class=\"interlanguage-link interwiki-uk mw-list-item\"><a href=\"https://uk.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Ukrainian\" lang=\"uk\" hreflang=\"uk\" class=\"interlanguage-link-target\"><span>Українська</span></a></li><li class=\"interlanguage-link interwiki-ur mw-list-item\"><a href=\"https://ur.wikipedia.org/wiki/%D9%85%D8%A7%D8%A6%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D9%B9\" title=\"مائیکروسافٹ – Urdu\" lang=\"ur\" hreflang=\"ur\" class=\"interlanguage-link-target\"><span>اردو</span></a></li><li class=\"interlanguage-link interwiki-ug mw-list-item\"><a href=\"https://ug.wikipedia.org/wiki/%D9%85%D9%89%D9%83%D8%B1%D9%88%D8%B3%D9%88%D9%81%D9%89%D8%AA_%D8%B4%D9%89%D8%B1%D9%83%D9%89%D8%AA%D9%89\" title=\"مىكروسوفىت شىركىتى – Uyghur\" lang=\"ug\" hreflang=\"ug\" class=\"interlanguage-link-target\"><span>ئۇيغۇرچە / Uyghurche</span></a></li><li class=\"interlanguage-link interwiki-vec mw-list-item\"><a href=\"https://vec.wikipedia.org/wiki/Microsoft_Corporation\" title=\"Microsoft Corporation – Venetian\" lang=\"vec\" hreflang=\"vec\" class=\"interlanguage-link-target\"><span>Vèneto</span></a></li><li class=\"interlanguage-link interwiki-vi mw-list-item\"><a href=\"https://vi.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Vietnamese\" lang=\"vi\" hreflang=\"vi\" class=\"interlanguage-link-target\"><span>Tiếng Việt</span></a></li><li class=\"interlanguage-link interwiki-fiu-vro mw-list-item\"><a href=\"https://fiu-vro.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Võro\" lang=\"vro\" hreflang=\"vro\" class=\"interlanguage-link-target\"><span>Võro</span></a></li><li class=\"interlanguage-link interwiki-wa mw-list-item\"><a href=\"https://wa.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Walloon\" lang=\"wa\" hreflang=\"wa\" class=\"interlanguage-link-target\"><span>Walon</span></a></li><li class=\"interlanguage-link interwiki-zh-classical mw-list-item\"><a href=\"https://zh-classical.wikipedia.org/wiki/%E5%BE%AE%E8%BB%9F\" title=\"微軟 – Literary Chinese\" lang=\"lzh\" hreflang=\"lzh\" class=\"interlanguage-link-target\"><span>文言</span></a></li><li class=\"interlanguage-link interwiki-war mw-list-item\"><a href=\"https://war.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Waray\" lang=\"war\" hreflang=\"war\" class=\"interlanguage-link-target\"><span>Winaray</span></a></li><li class=\"interlanguage-link interwiki-wuu mw-list-item\"><a href=\"https://wuu.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AF\" title=\"微软 – Wu\" lang=\"wuu\" hreflang=\"wuu\" class=\"interlanguage-link-target\"><span>吴语</span></a></li><li class=\"interlanguage-link interwiki-yi mw-list-item\"><a href=\"https://yi.wikipedia.org/wiki/%D7%9E%D7%99%D7%99%D7%A7%D7%A8%D7%90%D7%A1%D7%90%D7%A4%D7%98\" title=\"מייקראסאפט – Yiddish\" lang=\"yi\" hreflang=\"yi\" class=\"interlanguage-link-target\"><span>ייִדיש</span></a></li><li class=\"interlanguage-link interwiki-yo mw-list-item\"><a href=\"https://yo.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Yoruba\" lang=\"yo\" hreflang=\"yo\" class=\"interlanguage-link-target\"><span>Yorùbá</span></a></li><li class=\"interlanguage-link interwiki-zh-yue mw-list-item\"><a href=\"https://zh-yue.wikipedia.org/wiki/%E5%BE%AE%E8%BB%9F\" title=\"微軟 – Cantonese\" lang=\"yue\" hreflang=\"yue\" class=\"interlanguage-link-target\"><span>粵語</span></a></li><li class=\"interlanguage-link interwiki-diq mw-list-item\"><a href=\"https://diq.wikipedia.org/wiki/Microsoft\" title=\"Microsoft – Zazaki\" lang=\"diq\" hreflang=\"diq\" class=\"interlanguage-link-target\"><span>Zazaki</span></a></li><li class=\"interlanguage-link interwiki-zh mw-list-item\"><a href=\"https://zh.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AF\" title=\"微软 – Chinese\" lang=\"zh\" hreflang=\"zh\" class=\"interlanguage-link-target\"><span>中文</span></a></li>\n\t\t\t</ul>\n\t\t\t<div class=\"after-portlet after-portlet-lang\"><span class=\"wb-langlinks-edit wb-langlinks-link\"><a href=\"https://www.wikidata.org/wiki/Special:EntityPage/Q2283#sitelinks-wikipedia\" title=\"Edit interlanguage links\" class=\"wbc-editpage\">Edit links</a></span></div>\n\t\t</div>\n\n\t</div>\n</div>\n</header>\n\t\t\t\t<div class=\"vector-page-toolbar\">\n\t\t\t\t\t<div class=\"vector-page-toolbar-container\">\n\t\t\t\t\t\t<div id=\"left-navigation\">\n\t\t\t\t\t\t\t<nav aria-label=\"Namespaces\">\n\n<div id=\"p-associated-pages\" class=\"vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"ca-nstab-main\" class=\"selected vector-tab-noicon mw-list-item\"><a href=\"/wiki/Microsoft\" title=\"View the content page [c]\" accesskey=\"c\"><span>Article</span></a></li><li id=\"ca-talk\" class=\"vector-tab-noicon mw-list-item\"><a href=\"/wiki/Talk:Microsoft\" rel=\"discussion\" title=\"Discuss improvements to the content page [t]\" accesskey=\"t\"><span>Talk</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n<div id=\"p-variants\" class=\"vector-dropdown emptyPortlet\"  >\n\t<input type=\"checkbox\" id=\"p-variants-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-p-variants\" class=\"vector-dropdown-checkbox \" aria-label=\"Change language variant\"   >\n\t<label id=\"p-variants-label\" for=\"p-variants-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet\" aria-hidden=\"true\"  ><span class=\"vector-dropdown-label-text\">English</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\n\n<div id=\"p-variants\" class=\"vector-menu mw-portlet mw-portlet-variants emptyPortlet\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\n\t\t</ul>\n\n\t</div>\n</div>\n\n\n\t</div>\n</div>\n\n\t\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id=\"right-navigation\" class=\"vector-collapsible\">\n\t\t\t\t\t\t\t<nav aria-label=\"Views\">\n\n<div id=\"p-views\" class=\"vector-menu vector-menu-tabs mw-portlet mw-portlet-views\"  >\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"ca-view\" class=\"selected vector-tab-noicon mw-list-item\"><a href=\"/wiki/Microsoft\"><span>Read</span></a></li><li id=\"ca-viewsource\" class=\"vector-tab-noicon mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;action=edit\" title=\"This page is protected.&#10;You can view its source [e]\" accesskey=\"e\"><span>View source</span></a></li><li id=\"ca-history\" class=\"vector-tab-noicon mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;action=history\" title=\"Past revisions of this page [h]\" accesskey=\"h\"><span>View history</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n\t\t\t\t\t\t\t</nav>\n\n\t\t\t\t\t\t\t<nav class=\"vector-page-tools-landmark\" aria-label=\"Page tools\">\n\n<div id=\"vector-page-tools-dropdown\" class=\"vector-dropdown vector-page-tools-dropdown\"  >\n\t<input type=\"checkbox\" id=\"vector-page-tools-dropdown-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-page-tools-dropdown\" class=\"vector-dropdown-checkbox \"  aria-label=\"Tools\"  >\n\t<label id=\"vector-page-tools-dropdown-label\" for=\"vector-page-tools-dropdown-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet\" aria-hidden=\"true\"  ><span class=\"vector-dropdown-label-text\">Tools</span>\n\t</label>\n\t<div class=\"vector-dropdown-content\">\n\n\n\t\t\t\t\t\t\t\t\t<div id=\"vector-page-tools-unpinned-container\" class=\"vector-unpinned-container\">\n\n<div id=\"vector-page-tools\" class=\"vector-page-tools vector-pinnable-element\">\n\t<div\n\tclass=\"vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned\"\n\tdata-feature-name=\"page-tools-pinned\"\n\tdata-pinnable-element-id=\"vector-page-tools\"\n\tdata-pinned-container-id=\"vector-page-tools-pinned-container\"\n\tdata-unpinned-container-id=\"vector-page-tools-unpinned-container\"\n>\n\t<div class=\"vector-pinnable-header-label\">Tools</div>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-pin-button\" data-event-name=\"pinnable-header.vector-page-tools.pin\">move to sidebar</button>\n\t<button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button\" data-event-name=\"pinnable-header.vector-page-tools.unpin\">hide</button>\n</div>\n\n\n<div id=\"p-cactions\" class=\"vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items\"  title=\"More options\" >\n\t<div class=\"vector-menu-heading\">\n\t\tActions\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"ca-more-view\" class=\"selected vector-more-collapsible-item mw-list-item\"><a href=\"/wiki/Microsoft\"><span>Read</span></a></li><li id=\"ca-more-viewsource\" class=\"vector-more-collapsible-item mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;action=edit\"><span>View source</span></a></li><li id=\"ca-more-history\" class=\"vector-more-collapsible-item mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;action=history\"><span>View history</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n<div id=\"p-tb\" class=\"vector-menu mw-portlet mw-portlet-tb\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tGeneral\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"t-whatlinkshere\" class=\"mw-list-item\"><a href=\"/wiki/Special:WhatLinksHere/Microsoft\" title=\"List of all English Wikipedia pages containing links to this page [j]\" accesskey=\"j\"><span>What links here</span></a></li><li id=\"t-recentchangeslinked\" class=\"mw-list-item\"><a href=\"/wiki/Special:RecentChangesLinked/Microsoft\" rel=\"nofollow\" title=\"Recent changes in pages linked from this page [k]\" accesskey=\"k\"><span>Related changes</span></a></li><li id=\"t-upload\" class=\"mw-list-item\"><a href=\"/wiki/Wikipedia:File_Upload_Wizard\" title=\"Upload files [u]\" accesskey=\"u\"><span>Upload file</span></a></li><li id=\"t-specialpages\" class=\"mw-list-item\"><a href=\"/wiki/Special:SpecialPages\" title=\"A list of all special pages [q]\" accesskey=\"q\"><span>Special pages</span></a></li><li id=\"t-permalink\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;oldid=1213513440\" title=\"Permanent link to this revision of this page\"><span>Permanent link</span></a></li><li id=\"t-info\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;action=info\" title=\"More information about this page\"><span>Page information</span></a></li><li id=\"t-cite\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Special:CiteThisPage&amp;page=Microsoft&amp;id=1213513440&amp;wpFormIdentifier=titleform\" title=\"Information on how to cite this page\"><span>Cite this page</span></a></li><li id=\"t-urlshortener\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMicrosoft\"><span>Get shortened URL</span></a></li><li id=\"t-urlshortener-qrcode\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMicrosoft\"><span>Download QR code</span></a></li><li id=\"t-wikibase\" class=\"mw-list-item\"><a href=\"https://www.wikidata.org/wiki/Special:EntityPage/Q2283\" title=\"Structured data on this page hosted by Wikidata [g]\" accesskey=\"g\"><span>Wikidata item</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n<div id=\"p-coll-print_export\" class=\"vector-menu mw-portlet mw-portlet-coll-print_export\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tPrint/export\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li id=\"coll-download-as-rl\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Special:DownloadAsPdf&amp;page=Microsoft&amp;action=show-download-screen\" title=\"Download this page as a PDF file\"><span>Download as PDF</span></a></li><li id=\"t-print\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Microsoft&amp;printable=yes\" title=\"Printable version of this page [p]\" accesskey=\"p\"><span>Printable version</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n<div id=\"p-wikibase-otherprojects\" class=\"vector-menu mw-portlet mw-portlet-wikibase-otherprojects\"  >\n\t<div class=\"vector-menu-heading\">\n\t\tIn other projects\n\t</div>\n\t<div class=\"vector-menu-content\">\n\n\t\t<ul class=\"vector-menu-content-list\">\n\n\t\t\t<li class=\"wb-otherproject-link wb-otherproject-commons mw-list-item\"><a href=\"https://commons.wikimedia.org/wiki/Microsoft\" hreflang=\"en\"><span>Wikimedia Commons</span></a></li><li class=\"wb-otherproject-link wb-otherproject-wikinews mw-list-item\"><a href=\"https://en.wikinews.org/wiki/Category:Microsoft\" hreflang=\"en\"><span>Wikinews</span></a></li><li class=\"wb-otherproject-link wb-otherproject-wikiquote mw-list-item\"><a href=\"https://en.wikiquote.org/wiki/Microsoft\" hreflang=\"en\"><span>Wikiquote</span></a></li>\n\t\t</ul>\n\n\t</div>\n</div>\n\n</div>\n\n\t\t\t\t\t\t\t\t\t</div>\n\n\t</div>\n</div>\n\n\t\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"vector-column-end\">\n\t\t\t\t\t<div class=\"vector-sticky-pinned-container\">\n\t\t\t\t\t\t<nav class=\"vector-page-tools-landmark\" aria-label=\"Page tools\">\n\t\t\t\t\t\t\t<div id=\"vector-page-tools-pinned-container\" class=\"vector-pinned-container\">\n\n\t\t\t\t\t\t\t</div>\n\t\t</nav>\n\t\t\t\t\t\t<nav class=\"vector-client-prefs-landmark\" aria-label=\"Appearance\">\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div id=\"bodyContent\" class=\"vector-body\" aria-labelledby=\"firstHeading\" data-mw-ve-target-container>\n\t\t\t\t\t<div class=\"vector-body-before-content\">\n\t\t\t\t\t\t\t<div class=\"mw-indicators\">\n\t\t<div id=\"mw-indicator-coordinates\" class=\"mw-indicator\"><div class=\"mw-parser-output\"><span id=\"coordinates\"><a href=\"/wiki/Geographic_coordinate_system\" title=\"Geographic coordinate system\">Coordinates</a>: <style data-mw-deduplicate=\"TemplateStyles:r1156832818\">.mw-parser-output .geo-default,.mw-parser-output .geo-dms,.mw-parser-output .geo-dec{display:inline}.mw-parser-output .geo-nondefault,.mw-parser-output .geo-multi-punct,.mw-parser-output .geo-inline-hidden{display:none}.mw-parser-output .longitude,.mw-parser-output .latitude{white-space:nowrap}</style><span class=\"plainlinks nourlexpansion load-gadget\" data-gadget=\"WikiMiniAtlas\"><a class=\"external text\" href=\"https://geohack.toolforge.org/geohack.php?pagename=Microsoft&amp;params=47_38_23_N_122_7_42_W_region:US_dim:540\"><span class=\"geo-default\"><span class=\"geo-dms\" title=\"Maps, aerial photos, and other data for this location\"><span class=\"latitude\">47°38′23″N</span> <span class=\"longitude\">122°7′42″W</span></span></span><span class=\"geo-multi-punct\">&#xfeff; / &#xfeff;</span><span class=\"geo-nondefault\"><span class=\"geo-dec\" title=\"Maps, aerial photos, and other data for this location\">47.63972°N 122.12833°W</span><span style=\"display:none\">&#xfeff; / <span class=\"geo\">47.63972; -122.12833</span></span></span></a></span></span></div></div>\n\t\t<div id=\"mw-indicator-pp-default\" class=\"mw-indicator\"><div class=\"mw-parser-output\"><span typeof=\"mw:File\"><a href=\"/wiki/Wikipedia:Protection_policy#semi\" title=\"This article is semi-protected due to vandalism\"><img alt=\"Page semi-protected\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/1/1b/Semi-protection-shackle.svg/20px-Semi-protection-shackle.svg.png\" decoding=\"async\" width=\"20\" height=\"20\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/1/1b/Semi-protection-shackle.svg/30px-Semi-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/1/1b/Semi-protection-shackle.svg/40px-Semi-protection-shackle.svg.png 2x\" data-file-width=\"512\" data-file-height=\"512\" /></a></span></div></div>\n\t\t</div>\n\n\t\t\t\t\t\t<div id=\"siteSub\" class=\"noprint\">From Wikipedia, the free encyclopedia</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id=\"contentSub\"><div id=\"mw-content-subtitle\"></div></div>\n\n\n\t\t\t\t\t<div id=\"mw-content-text\" class=\"mw-body-content\"><div class=\"mw-content-ltr mw-parser-output\" lang=\"en\" dir=\"ltr\"><div class=\"shortdescription nomobile noexcerpt noprint searchaux\" style=\"display:none\">American multinational technology corporation</div>\n<p class=\"mw-empty-elt\">\n\n\n</p>\n<style data-mw-deduplicate=\"TemplateStyles:r1066479718\">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}body.skin-minerva .mw-parser-output .infobox-header,body.skin-minerva .mw-parser-output .infobox-subheader,body.skin-minerva .mw-parser-output .infobox-above,body.skin-minerva .mw-parser-output .infobox-title,body.skin-minerva .mw-parser-output .infobox-image,body.skin-minerva .mw-parser-output .infobox-full-data,body.skin-minerva .mw-parser-output .infobox-below{text-align:center}</style><table class=\"infobox vcard\"><caption class=\"infobox-title fn org\">Microsoft Corporation</caption><tbody><tr><td colspan=\"2\" class=\"infobox-image logo\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(2012).svg\" class=\"mw-file-description\"><img alt=\"A square divided into four sub-squares, colored red-orange, green, yellow and blue (clockwise), with the company name appearing to its right\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/250px-Microsoft_logo_%282012%29.svg.png\" decoding=\"async\" width=\"250\" height=\"53\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/375px-Microsoft_logo_%282012%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/500px-Microsoft_logo_%282012%29.svg.png 2x\" data-file-width=\"512\" data-file-height=\"109\" /></a></span></td></tr><tr><td colspan=\"2\" class=\"infobox-image logo\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Building92microsoft.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/250px-Building92microsoft.jpg\" decoding=\"async\" width=\"250\" height=\"167\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/375px-Building92microsoft.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/30/Building92microsoft.jpg/500px-Building92microsoft.jpg 2x\" data-file-width=\"5184\" data-file-height=\"3456\" /></a></span><div class=\"infobox-caption\">Building 92 on the <a href=\"/wiki/Microsoft_Redmond_campus\" class=\"mw-redirect\" title=\"Microsoft Redmond campus\">Microsoft Redmond campus</a></div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Company type</th><td class=\"infobox-data category\" style=\"line-height: 1.35em;\"><a href=\"/wiki/Public_company\" title=\"Public company\">Public</a></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\"><a href=\"/wiki/Ticker_symbol\" title=\"Ticker symbol\">Traded as</a></div></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><style data-mw-deduplicate=\"TemplateStyles:r1126788409\">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style><div class=\"plainlist\"><ul><li><a href=\"/wiki/Nasdaq\" title=\"Nasdaq\">Nasdaq</a>:&#160;<a rel=\"nofollow\" class=\"external text\" href=\"https://www.nasdaq.com/market-activity/stocks/msft\">MSFT</a></li><li><a href=\"/wiki/Nasdaq-100\" title=\"Nasdaq-100\">Nasdaq-100</a> component</li><li><a href=\"/wiki/Dow_Jones_Industrial_Average\" title=\"Dow Jones Industrial Average\">DJIA</a> component</li><li><a href=\"/wiki/S%26P_100\" title=\"S&amp;P 100\">S&amp;P 100</a> component</li><li><a href=\"/wiki/S%26P_500\" title=\"S&amp;P 500\">S&amp;P 500</a> component</li></ul></div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><a href=\"/wiki/International_Securities_Identification_Number\" title=\"International Securities Identification Number\">ISIN</a></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span class=\"plainlinks\"><a class=\"external text\" href=\"https://isin.toolforge.org/?language=en&amp;isin=US5949181045\">US5949181045</a></span></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Industry</th><td class=\"infobox-data category\" style=\"line-height: 1.35em;\"><a href=\"/wiki/Information_technology\" title=\"Information technology\">Information technology</a></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Founded</th><td class=\"infobox-data\" style=\"line-height: 1.35em;\">April&#160;4, 1975<span class=\"noprint\">&#59;&#32;48 years ago</span><span style=\"display:none\">&#160;(<span class=\"bday dtstart published updated\">1975-04-04</span>)</span> in <span class=\"nowrap\"><a href=\"/wiki/Albuquerque,_New_Mexico\" title=\"Albuquerque, New Mexico\">Albuquerque, New Mexico</a>, U.S.</span></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Founders</th><td class=\"infobox-data agent\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\"><ul><li><a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a></li><li><a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a></li></ul></div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Headquarters</th><td class=\"infobox-data label\" style=\"line-height: 1.35em;\"><a href=\"/wiki/One_Microsoft_Way\" class=\"mw-redirect\" title=\"One Microsoft Way\">One Microsoft Way</a>, <div style=\"display: inline;\" class=\"locality\"><span class=\"nowrap\"><a href=\"/wiki/Redmond,_Washington\" title=\"Redmond, Washington\">Redmond, Washington</a></span></div>, <div style=\"display: inline;\" class=\"country-name\">U.S.</div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\">Area served</div></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\">Worldwide</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\">Key people</div></th><td class=\"infobox-data agent\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\"><ul><li><a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a><br />(<a href=\"/wiki/Chairman\" class=\"mw-redirect\" title=\"Chairman\">Chairman</a> &amp; <a href=\"/wiki/Chief_executive_officer\" title=\"Chief executive officer\">CEO</a>)</li><li><a href=\"/wiki/Brad_Smith_(American_lawyer)\" title=\"Brad Smith (American lawyer)\">Brad Smith</a><br />(<a href=\"/wiki/Vice-Chairman\" class=\"mw-redirect\" title=\"Vice-Chairman\">Vice Chairman</a> &amp; <a href=\"/wiki/President_(corporate_title)\" title=\"President (corporate title)\">President</a>)</li><li>Bill Gates<br />(<a href=\"/wiki/Adviser\" title=\"Adviser\">technical adviser</a>)</li></ul></div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Products</th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\"><ul><li><a href=\"/wiki/Software_development\" title=\"Software development\">Software development</a></li><li><a href=\"/wiki/Computer_hardware\" title=\"Computer hardware\">Computer hardware</a></li><li><a href=\"/wiki/Consumer_electronics\" title=\"Consumer electronics\">Consumer electronics</a></li><li><a href=\"/wiki/Social_networking_service\" title=\"Social networking service\">Social networking service</a></li><li><a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">Cloud computing</a></li><li><a href=\"/wiki/Video_game_industry\" title=\"Video game industry\">Video games</a></li><li><a href=\"/wiki/Internet\" title=\"Internet\">Internet</a></li><li><a href=\"/wiki/Corporate_venture_capital\" title=\"Corporate venture capital\">Corporate venture capital</a></li></ul></div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Brands</th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><style data-mw-deduplicate=\"TemplateStyles:r1129693374\">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:\": \"}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:\" · \";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:\" (\";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:\")\";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:\" \"counter(listitem)\"\\a0 \"}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:\" (\"counter(listitem)\"\\a0 \"}</style><div class=\"hlist\">\n<ul><li><a href=\"/wiki/Microsoft_Windows\" title=\"Microsoft Windows\">Windows</a></li>\n<li><a href=\"/wiki/Microsoft_365\" title=\"Microsoft 365\">Microsoft 365</a></li>\n<li><a href=\"/wiki/Skype\" title=\"Skype\">Skype</a></li>\n<li><a href=\"/wiki/Visual_Studio\" title=\"Visual Studio\">Visual Studio</a></li>\n<li><a href=\"/wiki/Xbox\" title=\"Xbox\">Xbox</a></li>\n<li><a href=\"/wiki/Microsoft_Dynamics_365\" title=\"Microsoft Dynamics 365\">Dynamics</a></li>\n<li><a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Surface</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Services</th><td class=\"infobox-data category\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><div class=\"hlist\">\n<ul><li><a href=\"/wiki/Microsoft_Edge\" title=\"Microsoft Edge\">Edge</a></li>\n<li><a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Azure</a></li>\n<li><a href=\"/wiki/Microsoft_Bing\" title=\"Microsoft Bing\">Bing</a></li>\n<li><a href=\"/wiki/LinkedIn\" title=\"LinkedIn\">LinkedIn</a></li>\n<li><a href=\"/wiki/Yammer\" class=\"mw-redirect\" title=\"Yammer\">Yammer</a></li>\n<li><a href=\"/wiki/Microsoft_365\" title=\"Microsoft 365\">Microsoft 365</a></li>\n<li><a href=\"/wiki/OneDrive\" title=\"OneDrive\">OneDrive</a></li>\n<li><a href=\"/wiki/Microsoft_Outlook\" title=\"Microsoft Outlook\">Outlook</a></li>\n<li><a href=\"/wiki/GitHub\" title=\"GitHub\">GitHub</a></li>\n<li><a href=\"/wiki/Microsoft_Store_(digital)\" class=\"mw-redirect\" title=\"Microsoft Store (digital)\">Microsoft Store</a></li>\n<li><a href=\"/wiki/Windows_Update\" title=\"Windows Update\">Windows Update</a></li>\n<li><a href=\"/wiki/Xbox_Game_Pass\" title=\"Xbox Game Pass\">Xbox Game Pass</a></li>\n<li><a href=\"/wiki/Xbox_network\" title=\"Xbox network\">Xbox network</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Revenue</th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span typeof=\"mw:File\"><span title=\"Increase\"><img alt=\"Increase\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/11px-Increase2.svg.png\" decoding=\"async\" width=\"11\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/17px-Increase2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/22px-Increase2.svg.png 2x\" data-file-width=\"300\" data-file-height=\"300\" /></span></span> <span style=\"white-space: nowrap\"><a href=\"/wiki/United_States_dollar\" title=\"United States dollar\">US$</a>211.9 billion</span> (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\"><a href=\"/wiki/Earnings_before_interest_and_taxes\" title=\"Earnings before interest and taxes\">Operating income</a></div></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span typeof=\"mw:File\"><span title=\"Increase\"><img alt=\"Increase\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/11px-Increase2.svg.png\" decoding=\"async\" width=\"11\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/17px-Increase2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/22px-Increase2.svg.png 2x\" data-file-width=\"300\" data-file-height=\"300\" /></span></span> <span style=\"white-space: nowrap\">US$88.5 billion</span> (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\"><a href=\"/wiki/Net_income\" title=\"Net income\">Net income</a></div></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span typeof=\"mw:File\"><span title=\"Increase\"><img alt=\"Increase\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/11px-Increase2.svg.png\" decoding=\"async\" width=\"11\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/17px-Increase2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/22px-Increase2.svg.png 2x\" data-file-width=\"300\" data-file-height=\"300\" /></span></span> <span style=\"white-space: nowrap\">US$73.4 billion</span> (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><span class=\"nowrap\"><a href=\"/wiki/Asset\" title=\"Asset\">Total assets</a></span></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span typeof=\"mw:File\"><span title=\"Increase\"><img alt=\"Increase\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/11px-Increase2.svg.png\" decoding=\"async\" width=\"11\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/17px-Increase2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/22px-Increase2.svg.png 2x\" data-file-width=\"300\" data-file-height=\"300\" /></span></span> <span style=\"white-space: nowrap\">US$411.9 billion</span> (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><span class=\"nowrap\"><a href=\"/wiki/Equity_(finance)\" title=\"Equity (finance)\">Total equity</a></span></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span typeof=\"mw:File\"><span title=\"Increase\"><img alt=\"Increase\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/11px-Increase2.svg.png\" decoding=\"async\" width=\"11\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/17px-Increase2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Increase2.svg/22px-Increase2.svg.png 2x\" data-file-width=\"300\" data-file-height=\"300\" /></span></span> <span style=\"white-space: nowrap\">US$206.2 billion</span> (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><div style=\"display: inline-block; line-height: 1.2em; padding: .1em 0;\">Number of employees</div></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\">221,000 (2023)</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><a href=\"/wiki/Division_(business)\" title=\"Division (business)\">Divisions</a></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\">\n<ul><li><a href=\"/wiki/Microsoft_engineering_groups\" title=\"Microsoft engineering groups\">Microsoft Engineering Groups</a></li>\n<li><a href=\"/wiki/Microsoft_Digital_Crimes_Unit\" title=\"Microsoft Digital Crimes Unit\">Microsoft Digital Crimes Unit</a></li>\n<li><a href=\"/wiki/Microsoft_Press\" title=\"Microsoft Press\">Microsoft Press</a></li>\n<li><a href=\"/wiki/Microsoft_Gaming\" title=\"Microsoft Gaming\">Microsoft Gaming</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\"><a href=\"/wiki/Subsidiary\" title=\"Subsidiary\">Subsidiaries</a></th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\">\n<ul><li><a href=\"/wiki/Microsoft_Japan\" title=\"Microsoft Japan\">Microsoft Japan</a></li>\n<li><a href=\"/wiki/Microsoft_India\" title=\"Microsoft India\">Microsoft India</a></li>\n<li><a href=\"/wiki/Microsoft_Egypt\" title=\"Microsoft Egypt\">Microsoft Egypt</a></li>\n<li><a href=\"/wiki/GitHub\" title=\"GitHub\">GitHub</a></li>\n<li><a href=\"/wiki/LinkedIn\" title=\"LinkedIn\">LinkedIn</a></li>\n<li><a href=\"/wiki/Metaswitch\" title=\"Metaswitch\">Metaswitch</a></li>\n<li><a href=\"/wiki/Nuance_Communications\" title=\"Nuance Communications\">Nuance Communications</a></li>\n<li><a href=\"/wiki/RiskIQ\" title=\"RiskIQ\">RiskIQ</a></li>\n<li><a href=\"/wiki/Skype_Technologies\" title=\"Skype Technologies\">Skype Technologies</a></li>\n<li><a href=\"/wiki/Xamarin\" title=\"Xamarin\">Xamarin</a></li>\n<li><a href=\"/wiki/Xandr\" title=\"Xandr\">Xandr</a></li></ul>\n</div></td></tr><tr><td colspan=\"2\" class=\"infobox-full-data\" style=\"line-height: 1.35em;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1066479718\"></td></tr><tr><th scope=\"row\" class=\"infobox-label\"><a href=\"/wiki/Autonomous_System_Number\" class=\"mw-redirect\" title=\"Autonomous System Number\">ASN</a></th><td class=\"infobox-data\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1126788409\"><div class=\"plainlist\"><ul><li><style data-mw-deduplicate=\"TemplateStyles:r1133582631\">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:\"\\\"\"\"\\\"\"\"'\"\"'\"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url(\"//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg\")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url(\"//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg\")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url(\"//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg\")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url(\"//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg\")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}</style><a rel=\"nofollow\" class=\"external text\" href=\"https://bgp.tools/as/8075\">8075</a></li></ul></div></td></tr><tr style=\"display:none\"><td colspan=\"2\">\n</td></tr><tr><th scope=\"row\" class=\"infobox-label\" style=\"padding-right: 0.5em;\">Website</th><td class=\"infobox-data\" style=\"line-height: 1.35em;\"><span class=\"url\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.microsoft.com/\">microsoft.com</a></span></td></tr><tr><td colspan=\"2\" class=\"infobox-below\" style=\"line-height: 1.35em;\"><b>Footnotes&#160;/&#32;references</b><br />Financials as of June&#160;30,&#32;2023<sup class=\"plainlinks noexcerpt noprint asof-tag update\" style=\"display:none;\"><a class=\"external text\" href=\"https://en.wikipedia.org/w/index.php?title=Microsoft&amp;action=edit\">&#91;update&#93;</a></sup><sup id=\"cite_ref-1\" class=\"reference\"><a href=\"#cite_note-1\">&#91;1&#93;</a></sup></td></tr></tbody></table>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><style data-mw-deduplicate=\"TemplateStyles:r1045330069\">.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:#f8f9fa;border:1px solid #aaa;padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:720px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}</style><table class=\"sidebar nomobile nowraplinks vcard hlist\"><tbody><tr><th class=\"sidebar-title\" style=\"font-size: 110%; padding: 0; line-height: 150%;\"><table><tbody><tr>\n<td style=\"background:lavender; vertical-align:middle; padding:5px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Bill_Gates_2017_(cropped).jpg\" class=\"mw-file-description\"><img alt=\"Bill Gates in 2023\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Bill_Gates_2017_%28cropped%29.jpg/75px-Bill_Gates_2017_%28cropped%29.jpg\" decoding=\"async\" width=\"75\" height=\"102\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Bill_Gates_2017_%28cropped%29.jpg/113px-Bill_Gates_2017_%28cropped%29.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Bill_Gates_2017_%28cropped%29.jpg/150px-Bill_Gates_2017_%28cropped%29.jpg 2x\" data-file-width=\"1141\" data-file-height=\"1557\" /></a></span></td>\n<td style=\"background:lavender; vertical-align:middle; padding:6px; width:100%;\"><span class=\"tmp-color\" style=\"color:#000000\">This article is part of <br />a series about</span>\n<br /><span class=\"vcard\"><span class=\"fn\"><a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a></span></span></td>\n</tr></tbody></table></th></tr><tr><td class=\"sidebar-content\" style=\"padding:0.3em;\">\n<ul><li><a href=\"/wiki/Bill_Gates#Recognition\" title=\"Bill Gates\">Awards and honors</a></li>\n<li><a href=\"/wiki/Bill_Gates#Philanthropy\" title=\"Bill Gates\">Philanthropy</a></li>\n<li><a href=\"/wiki/Bill_Gates#Political_positions\" title=\"Bill Gates\">Political positions</a></li>\n<li><a href=\"/wiki/Bill_Gates#Public_image\" title=\"Bill Gates\">Public image</a></li>\n<li><a href=\"/wiki/Bill_Gates%27s_house\" title=\"Bill Gates&#39;s house\">Residence</a></li></ul>\n<hr />\n<div style=\"font-weight: bold;line-height:normal;\">Companies</div>\n<ul><li><a href=\"/wiki/Traf-O-Data\" title=\"Traf-O-Data\">Traf-O-Data</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a> (<a href=\"/wiki/Criticism_of_Microsoft\" title=\"Criticism of Microsoft\">criticism</a>)</li>\n<li><a href=\"/wiki/Branded_Entertainment_Network\" class=\"mw-redirect\" title=\"Branded Entertainment Network\">BEN</a></li>\n<li><a href=\"/wiki/Cascade_Investment\" title=\"Cascade Investment\">Cascade Investment</a></li>\n<li><a href=\"/wiki/TerraPower\" title=\"TerraPower\">TerraPower</a></li>\n<li><a href=\"/wiki/Gates_Ventures\" title=\"Gates Ventures\">Gates Ventures</a></li></ul>\n<hr />\n<div style=\"font-weight: bold;line-height:normal;\">Charitable organizations</div>\n<ul><li><a href=\"/wiki/Bill_%26_Melinda_Gates_Foundation\" title=\"Bill &amp; Melinda Gates Foundation\">Bill &amp; Melinda Gates Foundation</a></li>\n<li><a href=\"/wiki/Match_for_Africa\" title=\"Match for Africa\">Match for Africa</a></li>\n<li><a href=\"/wiki/The_Giving_Pledge\" title=\"The Giving Pledge\">The Giving Pledge</a></li>\n<li><a href=\"/wiki/OER_Project\" title=\"OER Project\">OER Project</a></li>\n<li><a href=\"/wiki/Breakthrough_Energy\" title=\"Breakthrough Energy\">Breakthrough Energy</a></li>\n<li><a href=\"/wiki/Mission_Innovation\" title=\"Mission Innovation\">Mission Innovation</a></li></ul>\n<hr />\n<div style=\"font-weight: bold;line-height:normal;\">Writings</div>\n<ul><li>\"<a href=\"/wiki/An_Open_Letter_to_Hobbyists\" title=\"An Open Letter to Hobbyists\">An Open Letter to Hobbyists</a>\"</li>\n<li><i><a href=\"/wiki/The_Road_Ahead_(Gates_book)\" title=\"The Road Ahead (Gates book)\">The Road Ahead</a></i></li>\n<li><i><a href=\"/wiki/Business_@_the_Speed_of_Thought\" title=\"Business @ the Speed of Thought\">Business @ the Speed of Thought</a></i></li>\n<li><i><a href=\"/wiki/How_to_Avoid_a_Climate_Disaster\" title=\"How to Avoid a Climate Disaster\">How to Avoid a Climate Disaster</a></i></li>\n<li><i><a href=\"/wiki/How_to_Prevent_the_Next_Pandemic\" title=\"How to Prevent the Next Pandemic\">How to Prevent the Next Pandemic</a></i></li></ul>\n<hr />\n<div style=\"font-weight: bold;line-height:normal;\">Related</div>\n<ul><li><a href=\"/wiki/Bill_Gates%27_flower_fly\" title=\"Bill Gates&#39; flower fly\">Bill Gates' flower fly</a></li>\n<li><a href=\"/wiki/Codex_Leicester\" title=\"Codex Leicester\">Codex Leicester</a></li>\n<li><i><a href=\"/wiki/Lost_on_the_Grand_Banks\" title=\"Lost on the Grand Banks\">Lost on the Grand Banks</a></i></li>\n<li><a href=\"/wiki/History_of_Microsoft\" title=\"History of Microsoft\">History of Microsoft</a></li>\n<li><a href=\"/wiki/Timeline_of_Microsoft\" title=\"Timeline of Microsoft\">Timeline of Microsoft</a></li>\n<li><a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a></li></ul>\n<hr /></td>\n</tr><tr><td class=\"sidebar-navbar\" style=\"text-align:center;\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><style data-mw-deduplicate=\"TemplateStyles:r1063604349\">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:\"[ \"}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:\" ]\"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}</style><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Bill_Gates_series\" title=\"Template:Bill Gates series\"><abbr title=\"View this template\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Bill_Gates_series\" title=\"Template talk:Bill Gates series\"><abbr title=\"Discuss this template\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Bill_Gates_series\" title=\"Special:EditPage/Template:Bill Gates series\"><abbr title=\"Edit this template\">e</abbr></a></li></ul></div></td></tr></tbody></table>\n<p><b>Microsoft Corporation</b> is an American <a href=\"/wiki/Multinational_corporation\" title=\"Multinational corporation\">multinational corporation</a> and <a href=\"/wiki/Technology_company\" title=\"Technology company\">technology company</a> headquartered in <a href=\"/wiki/Redmond,_Washington\" title=\"Redmond, Washington\">Redmond, Washington</a>.<sup id=\"cite_ref-2\" class=\"reference\"><a href=\"#cite_note-2\">&#91;2&#93;</a></sup> Microsoft's best-known <a href=\"/wiki/List_of_Microsoft_software\" title=\"List of Microsoft software\">software products</a> are the <a href=\"/wiki/Microsoft_Windows\" title=\"Microsoft Windows\">Windows</a> line of <a href=\"/wiki/List_of_Microsoft_operating_systems\" title=\"List of Microsoft operating systems\">operating systems</a>, the <a href=\"/wiki/Microsoft_365\" title=\"Microsoft 365\">Microsoft 365</a> suite of productivity applications, and the <a href=\"/wiki/Microsoft_Edge\" title=\"Microsoft Edge\">Edge</a> web browser. Its flagship <a href=\"/wiki/List_of_Microsoft_hardware\" class=\"mw-redirect\" title=\"List of Microsoft hardware\">hardware products</a> are the <a href=\"/wiki/Xbox\" title=\"Xbox\">Xbox</a> video game consoles and the <a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Microsoft Surface</a> lineup of <a href=\"/wiki/Touchscreen\" title=\"Touchscreen\">touchscreen</a> personal computers. Microsoft ranked No. 14 in the 2022 <a href=\"/wiki/Fortune_500\" title=\"Fortune 500\">Fortune 500</a> rankings of the largest United States corporations by total revenue;<sup id=\"cite_ref-3\" class=\"reference\"><a href=\"#cite_note-3\">&#91;3&#93;</a></sup> and it was the world's <a href=\"/wiki/List_of_the_largest_software_companies\" title=\"List of the largest software companies\">largest software maker</a> by revenue in 2022 according to <a href=\"/wiki/Forbes_Global_2000\" title=\"Forbes Global 2000\">Forbes Global 2000</a>. It is considered one of the <a href=\"/wiki/Big_Tech\" title=\"Big Tech\">Big Five</a> American <a href=\"/wiki/Information_technology\" title=\"Information technology\">information technology</a> companies, alongside <a href=\"/wiki/Alphabet_Inc.\" title=\"Alphabet Inc.\">Alphabet</a> (parent company of <a href=\"/wiki/Google\" title=\"Google\">Google</a>), <a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon</a>, <a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a>, and <a href=\"/wiki/Meta_Platforms\" title=\"Meta Platforms\">Meta</a> (parent company of <a href=\"/wiki/Facebook\" title=\"Facebook\">Facebook</a>).\n</p><p>Microsoft was founded by <a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a> and <a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a> on April 4, 1975, to develop and sell <a href=\"/wiki/BASIC_interpreter\" title=\"BASIC interpreter\">BASIC interpreters</a> for the <a href=\"/wiki/Altair_8800\" title=\"Altair 8800\">Altair 8800</a>. It rose to dominate the personal computer operating system market with <a href=\"/wiki/MS-DOS\" title=\"MS-DOS\">MS-DOS</a> in the mid-1980s, followed by Windows. The company's 1986 <a href=\"/wiki/Initial_public_offering\" title=\"Initial public offering\">initial public offering</a> (IPO) and subsequent rise in its share price created three billionaires and an estimated 12,000&#160;millionaires among Microsoft employees. Since the 1990s, it has increasingly diversified from the operating system market and has made several <a href=\"/wiki/List_of_mergers_and_acquisitions_by_Microsoft\" title=\"List of mergers and acquisitions by Microsoft\">corporate acquisitions</a>, the largest being the <a href=\"/wiki/Acquisition_of_Activision_Blizzard_by_Microsoft\" title=\"Acquisition of Activision Blizzard by Microsoft\">acquisition</a> of <a href=\"/wiki/Activision_Blizzard\" title=\"Activision Blizzard\">Activision Blizzard</a> for $68.7 billion in October 2023,<sup id=\"cite_ref-4\" class=\"reference\"><a href=\"#cite_note-4\">&#91;4&#93;</a></sup> followed by its acquisition of <a href=\"/wiki/LinkedIn\" title=\"LinkedIn\">LinkedIn</a> for $26.2&#160;billion in December 2016,<sup id=\"cite_ref-5\" class=\"reference\"><a href=\"#cite_note-5\">&#91;5&#93;</a></sup> and its acquisition of <a href=\"/wiki/Skype_Technologies\" title=\"Skype Technologies\">Skype Technologies</a> for $8.5&#160;billion in May 2011.<sup id=\"cite_ref-6\" class=\"reference\"><a href=\"#cite_note-6\">&#91;6&#93;</a></sup>\n</p><p>As of 2015<sup class=\"plainlinks noexcerpt noprint asof-tag update\" style=\"display:none;\"><a class=\"external text\" href=\"https://en.wikipedia.org/w/index.php?title=Microsoft&amp;action=edit\">&#91;update&#93;</a></sup>, Microsoft is market-dominant in the <a href=\"/wiki/IBM_PC_compatible\" title=\"IBM PC compatible\">IBM PC compatible</a> operating system market and the office software suite market, although it has lost the majority of the overall operating system market to <a href=\"/wiki/Android_(operating_system)\" title=\"Android (operating system)\">Android</a>.<sup id=\"cite_ref-7\" class=\"reference\"><a href=\"#cite_note-7\">&#91;7&#93;</a></sup> The company also produces a wide range of other consumer and enterprise software for desktops, laptops, tabs, gadgets, and servers, including <a href=\"/wiki/Web_search_engine\" class=\"mw-redirect\" title=\"Web search engine\">Internet search</a> (with <a href=\"/wiki/Microsoft_Bing\" title=\"Microsoft Bing\">Bing</a>), the digital services market (through <a href=\"/wiki/MSN\" title=\"MSN\">MSN</a>), <a href=\"/wiki/Mixed_reality\" title=\"Mixed reality\">mixed reality</a> (<a href=\"/wiki/Microsoft_HoloLens\" title=\"Microsoft HoloLens\">HoloLens</a>), cloud computing (<a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Azure</a>), and software development (<a href=\"/wiki/Microsoft_Visual_Studio\" class=\"mw-redirect\" title=\"Microsoft Visual Studio\">Visual Studio</a>).\n</p><p><a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a> replaced Gates as CEO in 2000 and later envisioned a \"devices and services\" strategy.<sup id=\"cite_ref-8\" class=\"reference\"><a href=\"#cite_note-8\">&#91;8&#93;</a></sup> This unfolded with Microsoft acquiring <a href=\"/wiki/Danger_Inc.\" class=\"mw-redirect\" title=\"Danger Inc.\">Danger Inc.</a> in 2008,<sup id=\"cite_ref-9\" class=\"reference\"><a href=\"#cite_note-9\">&#91;9&#93;</a></sup> entering the personal computer production market for the first time in June 2012 with the launch of the Microsoft Surface line of <a href=\"/wiki/Tablet_computer\" title=\"Tablet computer\">tablet computers</a>, and later forming <a href=\"/wiki/Microsoft_Mobile\" title=\"Microsoft Mobile\">Microsoft Mobile</a> through the acquisition of <a href=\"/wiki/Nokia\" title=\"Nokia\">Nokia</a>'s devices and services division. Since <a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a> took over as CEO in 2014, the company has scaled back on hardware and instead focused on <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a>, a move that helped the company's <a href=\"/wiki/Share_(finance)\" title=\"Share (finance)\">shares</a> reach their highest value since December 1999.<sup id=\"cite_ref-10\" class=\"reference\"><a href=\"#cite_note-10\">&#91;10&#93;</a></sup><sup id=\"cite_ref-11\" class=\"reference\"><a href=\"#cite_note-11\">&#91;11&#93;</a></sup> Under Nadella's direction, the company has also heavily expanded its gaming business to support the Xbox brand, establishing the <a href=\"/wiki/Microsoft_Gaming\" title=\"Microsoft Gaming\">Microsoft Gaming</a> division in 2022, dedicated to operating Xbox in addition to its three subsidiaries (<a href=\"/wiki/Video_game_publisher\" title=\"Video game publisher\">publishers</a>). Microsoft Gaming is the third-largest gaming company in the world by revenue as of 2023.<sup id=\"cite_ref-12\" class=\"reference\"><a href=\"#cite_note-12\">&#91;12&#93;</a></sup>\n</p><p>Earlier dethroned by Apple in 2010, and in 2018, Microsoft reclaimed its position as the most valuable publicly traded company in the world.<sup id=\"cite_ref-13\" class=\"reference\"><a href=\"#cite_note-13\">&#91;13&#93;</a></sup> In April 2019, Microsoft reached a <span class=\"nowrap\">trillion-dollar</span> <a href=\"/wiki/Market_capitalization\" title=\"Market capitalization\">market cap</a>, becoming the third U.S. public company to be <a href=\"/wiki/Trillion-dollar_company\" class=\"mw-redirect\" title=\"Trillion-dollar company\">valued at over $1&#160;trillion</a> after Apple and Amazon, respectively. As of 2023<sup class=\"plainlinks noexcerpt noprint asof-tag update\" style=\"display:none;\"><a class=\"external text\" href=\"https://en.wikipedia.org/w/index.php?title=Microsoft&amp;action=edit\">&#91;update&#93;</a></sup>, Microsoft has the <a href=\"/wiki/List_of_most_valuable_brands\" title=\"List of most valuable brands\">third-highest</a> global <a href=\"/wiki/Brand_valuation\" title=\"Brand valuation\">brand valuation</a>.\n</p><p>Microsoft <a href=\"/wiki/Criticism_of_Microsoft\" title=\"Criticism of Microsoft\">has been criticized</a> for its monopolistic practices and the company's software has been criticized for problems with <a href=\"/wiki/Ease_of_use\" class=\"mw-redirect\" title=\"Ease of use\">ease of use</a>, <a href=\"/wiki/Robustness_(computer_science)\" title=\"Robustness (computer science)\">robustness</a>, and <a href=\"/wiki/Computer_security\" title=\"Computer security\">security</a>.\n</p>\n<meta property=\"mw:PageProp/toc\" />\n<h2><span class=\"mw-headline\" id=\"History\">History</span></h2>\n<style data-mw-deduplicate=\"TemplateStyles:r1033289096\">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}</style><div role=\"note\" class=\"hatnote navigation-not-searchable\">Main article: <a href=\"/wiki/History_of_Microsoft\" title=\"History of Microsoft\">History of Microsoft</a></div>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1033289096\"><div role=\"note\" class=\"hatnote navigation-not-searchable\">For a chronological guide, see <a href=\"/wiki/Timeline_of_Microsoft\" title=\"Timeline of Microsoft\">Timeline of Microsoft</a>.</div>\n<h3><span id=\"1972.E2.80.931985:_Founding\"></span><span class=\"mw-headline\" id=\"1972–1985:_Founding\">1972–1985: Founding</span></h3>\n<figure class=\"mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Altair_8800_and_Model_33_ASR_Teletype_.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Altair_8800_and_Model_33_ASR_Teletype_.jpg/256px-Altair_8800_and_Model_33_ASR_Teletype_.jpg\" decoding=\"async\" width=\"256\" height=\"192\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Altair_8800_and_Model_33_ASR_Teletype_.jpg/384px-Altair_8800_and_Model_33_ASR_Teletype_.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Altair_8800_and_Model_33_ASR_Teletype_.jpg/512px-Altair_8800_and_Model_33_ASR_Teletype_.jpg 2x\" data-file-width=\"4032\" data-file-height=\"3024\" /></a><figcaption>An Altair 8800 computer (left) with the popular Model 33 ASR Teletype as terminal, paper tape reader, and paper tape punch</figcaption></figure>\n<figure class=\"mw-default-size mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:1981BillPaul.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/en/thumb/4/4f/1981BillPaul.jpg/220px-1981BillPaul.jpg\" decoding=\"async\" width=\"220\" height=\"152\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/4/4f/1981BillPaul.jpg 1.5x\" data-file-width=\"250\" data-file-height=\"173\" /></a><figcaption><a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a> and <a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a> on October 19, 1981, after signing a pivotal contract with <a href=\"/wiki/IBM\" title=\"IBM\">IBM</a><sup id=\"cite_ref-Allan_2001_14-0\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 228\">&#58;&#8202;228&#8202;</span></sup></figcaption></figure>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Bill_Gates_and_Paul_Allen_Business_Cards.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Bill_Gates_and_Paul_Allen_Business_Cards.jpg/220px-Bill_Gates_and_Paul_Allen_Business_Cards.jpg\" decoding=\"async\" width=\"220\" height=\"165\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Bill_Gates_and_Paul_Allen_Business_Cards.jpg/330px-Bill_Gates_and_Paul_Allen_Business_Cards.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Bill_Gates_and_Paul_Allen_Business_Cards.jpg/440px-Bill_Gates_and_Paul_Allen_Business_Cards.jpg 2x\" data-file-width=\"4032\" data-file-height=\"3024\" /></a><figcaption>Bill Gates and Paul Allen's Original Business Cards located in the Microsoft Visitor Center.</figcaption></figure>\n<p>Childhood friends <a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a> and <a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a> sought to make a business using their skills in <a href=\"/wiki/Computer_programming\" title=\"Computer programming\">computer programming</a>.<sup id=\"cite_ref-15\" class=\"reference\"><a href=\"#cite_note-15\">&#91;15&#93;</a></sup> In 1972, they founded <a href=\"/wiki/Traf-O-Data\" title=\"Traf-O-Data\">Traf-O-Data</a>, which sold a rudimentary computer to track and analyze automobile traffic data. Gates enrolled at <a href=\"/wiki/Harvard_University\" title=\"Harvard University\">Harvard University</a> while Allen pursued a degree in computer science at <a href=\"/wiki/Washington_State_University\" title=\"Washington State University\">Washington State University</a>, though he later dropped out to work at <a href=\"/wiki/Honeywell\" title=\"Honeywell\">Honeywell</a>.<sup id=\"cite_ref-16\" class=\"reference\"><a href=\"#cite_note-16\">&#91;16&#93;</a></sup> The January 1975 issue of <i><a href=\"/wiki/Popular_Electronics\" title=\"Popular Electronics\">Popular Electronics</a></i> featured <a href=\"/wiki/Micro_Instrumentation_and_Telemetry_Systems\" title=\"Micro Instrumentation and Telemetry Systems\">Micro Instrumentation and Telemetry Systems</a>'s (MITS) <a href=\"/wiki/Altair_8800\" title=\"Altair 8800\">Altair 8800</a> microcomputer,<sup id=\"cite_ref-17\" class=\"reference\"><a href=\"#cite_note-17\">&#91;17&#93;</a></sup> which inspired Allen to suggest that they could program a <a href=\"/wiki/BASIC\" title=\"BASIC\">BASIC</a> interpreter for the device. Gates called MITS and claimed that he had a working interpreter, and MITS requested a demonstration. Allen worked on a simulator for the Altair while Gates developed the interpreter, and it worked flawlessly when they demonstrated it to MITS in March 1975 in <a href=\"/wiki/Albuquerque,_New_Mexico\" title=\"Albuquerque, New Mexico\">Albuquerque, New Mexico</a>. MITS agreed to distribute it, marketing it as <a href=\"/wiki/Altair_BASIC\" title=\"Altair BASIC\">Altair BASIC</a>.<sup id=\"cite_ref-Allan_2001_14-1\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 108, 112–114\">&#58;&#8202;108,&#8202;112–114&#8202;</span></sup> Gates and Allen established Microsoft on April 4, 1975, with Gates as CEO,<sup id=\"cite_ref-BBCTL_18-0\" class=\"reference\"><a href=\"#cite_note-BBCTL-18\">&#91;18&#93;</a></sup> and Allen suggested the name \"Micro-Soft,\" short for micro-computer software.<sup id=\"cite_ref-19\" class=\"reference\"><a href=\"#cite_note-19\">&#91;19&#93;</a></sup><sup id=\"cite_ref-20\" class=\"reference\"><a href=\"#cite_note-20\">&#91;20&#93;</a></sup> In August 1977, the company formed an agreement with ASCII Magazine in Japan, resulting in its first international office of <a href=\"/wiki/ASCII_Corporation\" title=\"ASCII Corporation\">ASCII Microsoft</a>.<sup id=\"cite_ref-21\" class=\"reference\"><a href=\"#cite_note-21\">&#91;21&#93;</a></sup> Microsoft moved its headquarters to <a href=\"/wiki/Bellevue,_Washington\" title=\"Bellevue, Washington\">Bellevue, Washington</a>, in January 1979.<sup id=\"cite_ref-BBCTL_18-1\" class=\"reference\"><a href=\"#cite_note-BBCTL-18\">&#91;18&#93;</a></sup>\n</p><p>Microsoft entered the operating system (OS) business in 1980 with its own version of <a href=\"/wiki/Unix\" title=\"Unix\">Unix</a> called <a href=\"/wiki/Xenix\" title=\"Xenix\">Xenix</a>,<sup id=\"cite_ref-22\" class=\"reference\"><a href=\"#cite_note-22\">&#91;22&#93;</a></sup> but it was <a href=\"/wiki/MS-DOS\" title=\"MS-DOS\">MS-DOS</a> that solidified the company's dominance. <a href=\"/wiki/IBM\" title=\"IBM\">IBM</a> awarded a contract to Microsoft in November 1980 to provide a version of the <a href=\"/wiki/CP/M\" title=\"CP/M\">CP/M</a> OS to be used in the <a href=\"/wiki/IBM_Personal_Computer\" title=\"IBM Personal Computer\">IBM Personal Computer</a> (IBM PC).<sup id=\"cite_ref-23\" class=\"reference\"><a href=\"#cite_note-23\">&#91;23&#93;</a></sup> For this deal, Microsoft purchased a CP/M clone called <a href=\"/wiki/86-DOS\" title=\"86-DOS\">86-DOS</a> from <a href=\"/wiki/Seattle_Computer_Products\" title=\"Seattle Computer Products\">Seattle Computer Products</a> which it branded as MS-DOS, although IBM rebranded it to <a href=\"/wiki/IBM_PC_DOS\" title=\"IBM PC DOS\">IBM PC DOS</a>. Microsoft retained ownership of MS-DOS following the release of the IBM PC in August 1981. IBM had copyrighted the IBM PC <a href=\"/wiki/BIOS\" title=\"BIOS\">BIOS</a>, so other companies had to reverse engineer it for non-IBM hardware to run as <a href=\"/wiki/IBM_PC_compatible\" title=\"IBM PC compatible\">IBM PC compatibles</a>, but no such restriction applied to the operating systems. Microsoft eventually became the leading PC operating systems vendor.<sup id=\"cite_ref-24\" class=\"reference\"><a href=\"#cite_note-24\">&#91;24&#93;</a></sup><sup id=\"cite_ref-25\" class=\"reference\"><a href=\"#cite_note-25\">&#91;25&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 210\">&#58;&#8202;210&#8202;</span></sup> The company expanded into new markets with the release of the <a href=\"/wiki/Microsoft_Mouse\" title=\"Microsoft Mouse\">Microsoft Mouse</a> in 1983, as well as with a publishing division named <a href=\"/wiki/Microsoft_Press\" title=\"Microsoft Press\">Microsoft Press</a>.<sup id=\"cite_ref-Allan_2001_14-2\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 232\">&#58;&#8202;232&#8202;</span></sup>\nPaul Allen resigned from Microsoft in 1983 after developing <a href=\"/wiki/Hodgkin%27s_lymphoma\" class=\"mw-redirect\" title=\"Hodgkin&#39;s lymphoma\">Hodgkin's lymphoma</a>.<sup id=\"cite_ref-26\" class=\"reference\"><a href=\"#cite_note-26\">&#91;26&#93;</a></sup> Allen claimed in <i>Idea Man: A Memoir by the co-founder of Microsoft</i> that Gates wanted to dilute his share in the company when he was diagnosed with Hodgkin's disease because he did not think that he was working hard enough.<sup id=\"cite_ref-27\" class=\"reference\"><a href=\"#cite_note-27\">&#91;27&#93;</a></sup> Allen later invested in low-tech sectors, sports teams, commercial real estate, neuroscience, private space flight, and more.<sup id=\"cite_ref-28\" class=\"reference\"><a href=\"#cite_note-28\">&#91;28&#93;</a></sup>\n</p>\n<h3><span id=\"1985.E2.80.931994:_Windows_and_Office\"></span><span class=\"mw-headline\" id=\"1985–1994:_Windows_and_Office\">1985–1994: Windows and Office</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Microsoft_Windows_1.0_pages2_3.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Microsoft_Windows_1.0_pages2_3.jpg/220px-Microsoft_Windows_1.0_pages2_3.jpg\" decoding=\"async\" width=\"220\" height=\"165\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Microsoft_Windows_1.0_pages2_3.jpg/330px-Microsoft_Windows_1.0_pages2_3.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Microsoft_Windows_1.0_pages2_3.jpg/440px-Microsoft_Windows_1.0_pages2_3.jpg 2x\" data-file-width=\"2900\" data-file-height=\"2175\" /></a><figcaption><a href=\"/wiki/Windows_1.0\" title=\"Windows 1.0\">Windows 1.0</a> was released on November 20, 1985, as the first version of the Windows line.</figcaption></figure>\n<p>Microsoft released <a href=\"/wiki/Windows\" class=\"mw-redirect\" title=\"Windows\">Windows</a> on November 20, 1985, as a graphical extension for <a href=\"/wiki/MS-DOS\" title=\"MS-DOS\">MS-DOS</a>,<sup id=\"cite_ref-Allan_2001_14-3\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 242–243, 246\">&#58;&#8202;242–243,&#8202;246&#8202;</span></sup> despite having begun jointly developing <a href=\"/wiki/OS/2\" title=\"OS/2\">OS/2</a> with IBM that August.<sup id=\"cite_ref-29\" class=\"reference\"><a href=\"#cite_note-29\">&#91;29&#93;</a></sup> Microsoft moved its headquarters from Bellevue to <a href=\"/wiki/Redmond,_Washington\" title=\"Redmond, Washington\">Redmond, Washington</a>, on February 26, 1986, and went public on March 13,<sup id=\"cite_ref-CBSCHRON_30-0\" class=\"reference\"><a href=\"#cite_note-CBSCHRON-30\">&#91;30&#93;</a></sup> with the resulting rise in stock making an estimated four billionaires and 12,000&#160;millionaires from Microsoft employees.<sup id=\"cite_ref-31\" class=\"reference\"><a href=\"#cite_note-31\">&#91;31&#93;</a></sup> Microsoft released its version of OS/2 to original equipment manufacturers (OEMs) on April 2, 1987.<sup id=\"cite_ref-Allan_2001_14-4\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup> In 1990, the Federal Trade Commission examined Microsoft for possible collusion due to the partnership with IBM, marking the beginning of more than a decade of legal clashes with the government.<sup id=\"cite_ref-32\" class=\"reference\"><a href=\"#cite_note-32\">&#91;32&#93;</a></sup> <sup class=\"reference nowrap\"><span title=\"Page / location: 243–244\">&#58;&#8202;243–244&#8202;</span></sup> Meanwhile, the company was at work on Microsoft <a href=\"/wiki/Windows_NT\" title=\"Windows NT\">Windows NT</a>, which was heavily based on their copy of the OS/2 code. It shipped on July 21, 1993, with a new modular <a href=\"/wiki/Kernel_(operating_system)\" title=\"Kernel (operating system)\">kernel</a> and the <a href=\"/wiki/32-bit_computing\" title=\"32-bit computing\">32-bit</a> <a href=\"/wiki/Windows_API\" title=\"Windows API\">Win32</a> application programming interface (API), making it easier to port from <a href=\"/wiki/16-bit_computing\" title=\"16-bit computing\">16-bit</a> (MS-DOS-based) Windows. Microsoft informed IBM of Windows NT, and the OS/2 partnership deteriorated.<sup id=\"cite_ref-33\" class=\"reference\"><a href=\"#cite_note-33\">&#91;33&#93;</a></sup>\n</p><p>In 1990, Microsoft introduced the <a href=\"/wiki/Microsoft_Office\" title=\"Microsoft Office\">Microsoft Office</a> suite which bundled separate applications such as <a href=\"/wiki/Microsoft_Word\" title=\"Microsoft Word\">Microsoft Word</a> and <a href=\"/wiki/Microsoft_Excel\" title=\"Microsoft Excel\">Microsoft Excel</a>.<sup id=\"cite_ref-Allan_2001_14-5\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 301\">&#58;&#8202;301&#8202;</span></sup> On May 22, Microsoft launched <a href=\"/wiki/Windows_3.0\" title=\"Windows 3.0\">Windows 3.0</a>, featuring streamlined user interface graphics and improved protected mode capability for the <a href=\"/wiki/I386\" title=\"I386\">Intel 386</a> processor,<sup id=\"cite_ref-34\" class=\"reference\"><a href=\"#cite_note-34\">&#91;34&#93;</a></sup> and both Office and Windows became dominant in their respective areas.<sup id=\"cite_ref-35\" class=\"reference\"><a href=\"#cite_note-35\">&#91;35&#93;</a></sup><sup id=\"cite_ref-36\" class=\"reference\"><a href=\"#cite_note-36\">&#91;36&#93;</a></sup>\n</p><p>On July 27, 1994, the <a href=\"/wiki/United_States_Department_of_Justice_Antitrust_Division\" title=\"United States Department of Justice Antitrust Division\">Department of Justice's Antitrust Division</a> filed a competitive impact statement that said: \"Beginning in 1988 and continuing until July 15, 1994, Microsoft induced many OEMs to execute anti-competitive 'per processor licenses. Under a per-processor license, an OEM pays Microsoft a royalty for each computer it sells containing a particular microprocessor, whether the OEM sells the computer with a Microsoft operating system or a non-Microsoft operating system. In effect, the royalty payment to Microsoft when no Microsoft product is being used acts as a penalty, or tax, on the OEM's use of a competing PC operating system. Since 1988, Microsoft's use of per processor licenses has increased.\"<sup id=\"cite_ref-37\" class=\"reference\"><a href=\"#cite_note-37\">&#91;37&#93;</a></sup>\n</p>\n<h3><span id=\"1995.E2.80.932007:_Foray_into_the_Web.2C_Windows_95.2C_Windows_XP.2C_and_Xbox\"></span><span class=\"mw-headline\" id=\"1995–2007:_Foray_into_the_Web,_Windows_95,_Windows_XP,_and_Xbox\">1995–2007: Foray into the Web, Windows 95, Windows XP, and Xbox</span></h3>\n<figure class=\"mw-default-size mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:300lx.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/e/e9/300lx.jpg/220px-300lx.jpg\" decoding=\"async\" width=\"220\" height=\"168\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/e/e9/300lx.jpg/330px-300lx.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e9/300lx.jpg/440px-300lx.jpg 2x\" data-file-width=\"1498\" data-file-height=\"1146\" /></a><figcaption>In 1996, Microsoft released Windows CE, a version of the operating system meant for personal digital assistants and other tiny computers, shown here on the <a href=\"/wiki/HP_300LX\" title=\"HP 300LX\">HP 300LX</a>.</figcaption></figure>\n<p>Following Bill Gates's internal \"Internet Tidal Wave memo\" on May 26, 1995, Microsoft began to redefine its offerings and expand its product line into <a href=\"/wiki/Computer_network\" title=\"Computer network\">computer networking</a> and the <a href=\"/wiki/World_Wide_Web\" title=\"World Wide Web\">World Wide Web</a>.<sup id=\"cite_ref-38\" class=\"reference\"><a href=\"#cite_note-38\">&#91;38&#93;</a></sup> With a few exceptions of new companies, like <a href=\"/wiki/Netscape\" title=\"Netscape\">Netscape</a>, Microsoft was the only major and established company that acted fast enough to be a part of the World Wide Web practically from the start. Other companies like <a href=\"/wiki/Borland\" title=\"Borland\">Borland</a>, <a href=\"/wiki/WordPerfect\" title=\"WordPerfect\">WordPerfect</a>, <a href=\"/wiki/Novell\" title=\"Novell\">Novell</a>, <a href=\"/wiki/IBM\" title=\"IBM\">IBM</a> and <a href=\"/wiki/Lotus_Software\" title=\"Lotus Software\">Lotus</a>, being much slower to adapt to the new situation, would give Microsoft market dominance.<sup id=\"cite_ref-39\" class=\"reference\"><a href=\"#cite_note-39\">&#91;39&#93;</a></sup>\n</p><p>The company released <a href=\"/wiki/Windows_95\" title=\"Windows 95\">Windows 95</a> on August 24, 1995, featuring <a href=\"/wiki/Preemption_(computing)#PREEMPTIVE\" title=\"Preemption (computing)\">pre-emptive multitasking</a>, a completely new user interface with a novel <a href=\"/wiki/Start_menu\" title=\"Start menu\">start button</a>, and 32-bit compatibility; similar to NT, it provided the Win32 API.<sup id=\"cite_ref-40\" class=\"reference\"><a href=\"#cite_note-40\">&#91;40&#93;</a></sup><sup id=\"cite_ref-41\" class=\"reference\"><a href=\"#cite_note-41\">&#91;41&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 20\">&#58;&#8202;20&#8202;</span></sup> Windows 95 came bundled with the <a href=\"/wiki/Online_service_provider\" title=\"Online service provider\">online service</a> <a href=\"/wiki/MSN\" title=\"MSN\">MSN</a>, which was at first intended to be a competitor to the Internet,<sup class=\"noprint Inline-Template\" style=\"white-space:nowrap;\">&#91;<i><a href=\"/wiki/Wikipedia:Accuracy_dispute#Disputed_statement\" title=\"Wikipedia:Accuracy dispute\"><span title=\"&quot;The Internet&quot; is a huge network of cables, microwave links and switching equipment, and even Microsoft at the time didn&#39;t have the financial means to replicate it, nor would there have been any business reason to do so. (May 2019)\">dubious</span></a>&#32;<span class=\"metadata\"> &#8211; <a href=\"/wiki/Talk:Microsoft#Dubious\" title=\"Talk:Microsoft\">discuss</a></span></i>&#93;</sup> and (for OEMs) <a href=\"/wiki/Internet_Explorer\" title=\"Internet Explorer\">Internet Explorer</a>, a <a href=\"/wiki/Web_browser\" title=\"Web browser\">Web browser</a>. Internet Explorer has not bundled with the retail Windows 95 boxes, because the boxes were printed before the team finished the Web browser, and instead were included in the Windows 95 Plus! pack.<sup id=\"cite_ref-42\" class=\"reference\"><a href=\"#cite_note-42\">&#91;42&#93;</a></sup> Backed by a high-profile marketing campaign<sup id=\"cite_ref-43\" class=\"reference\"><a href=\"#cite_note-43\">&#91;43&#93;</a></sup> and what <i><a href=\"/wiki/The_New_York_Times\" title=\"The New York Times\">The New York Times</a></i> called \"the splashiest, most frenzied, most expensive introduction of a computer product in the industry's history,\"<sup id=\"cite_ref-44\" class=\"reference\"><a href=\"#cite_note-44\">&#91;44&#93;</a></sup> Windows 95 quickly became a success.<sup id=\"cite_ref-45\" class=\"reference\"><a href=\"#cite_note-45\">&#91;45&#93;</a></sup> Branching out into new markets in 1996, Microsoft and <a href=\"/wiki/General_Electric\" title=\"General Electric\">General Electric</a>'s <a href=\"/wiki/NBC\" title=\"NBC\">NBC</a> unit created a new <a href=\"/wiki/24/7_service\" title=\"24/7 service\">24/7</a> cable news channel, <a href=\"/wiki/MSNBC\" title=\"MSNBC\">MSNBC</a>.<sup id=\"cite_ref-46\" class=\"reference\"><a href=\"#cite_note-46\">&#91;46&#93;</a></sup> Microsoft created <a href=\"/wiki/Windows_Embedded_Compact#Versions\" title=\"Windows Embedded Compact\">Windows CE 1.0</a>, a new OS designed for devices with low memory and other constraints, such as <a href=\"/wiki/Personal_digital_assistant\" title=\"Personal digital assistant\">personal digital assistants</a>.<sup id=\"cite_ref-47\" class=\"reference\"><a href=\"#cite_note-47\">&#91;47&#93;</a></sup> In October 1997, the Justice Department filed a motion in the Federal <a href=\"/wiki/United_States_district_court\" title=\"United States district court\">District Court</a>, stating that Microsoft violated an agreement signed in 1994 and asked the court to stop the bundling of <a href=\"/wiki/Internet_Explorer\" title=\"Internet Explorer\">Internet Explorer</a> with Windows.<sup id=\"cite_ref-Allan_2001_14-6\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 323–324\">&#58;&#8202;323–324&#8202;</span></sup>\n</p>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Xbox-console.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Xbox-console.jpg/220px-Xbox-console.jpg\" decoding=\"async\" width=\"220\" height=\"101\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Xbox-console.jpg/330px-Xbox-console.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Xbox-console.jpg/440px-Xbox-console.jpg 2x\" data-file-width=\"5700\" data-file-height=\"2620\" /></a><figcaption>Microsoft released the first installment in the <a href=\"/wiki/Xbox\" title=\"Xbox\">Xbox</a> series of consoles in 2001. The <a href=\"/wiki/Xbox_(console)\" title=\"Xbox (console)\">Xbox</a>, graphically powerful compared to its rivals, featured a standard PC's 733&#160;MHz Intel Pentium III processor.</figcaption></figure>\n<p>On January 13, 2000, Bill Gates handed over the CEO position to <a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a>, an old college friend of Gates and employee of the company since 1980, while creating a new position for himself as Chief <a href=\"/wiki/Software_architect\" title=\"Software architect\">Software Architect</a>.<sup id=\"cite_ref-Allan_2001_14-7\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 111, 228\">&#58;&#8202;111,&#8202;228&#8202;</span></sup><sup id=\"cite_ref-BBCTL_18-2\" class=\"reference\"><a href=\"#cite_note-BBCTL-18\">&#91;18&#93;</a></sup> Various companies including Microsoft formed the <a href=\"/wiki/Trusted_Computing_Group\" title=\"Trusted Computing Group\">Trusted Computing Platform Alliance</a> in October 1999 to (among other things) increase security and protect <a href=\"/wiki/Intellectual_property\" title=\"Intellectual property\">intellectual property</a> through identifying changes in hardware and software. Critics decried the alliance as a way to enforce indiscriminate restrictions over how consumers use software, and over how computers behave, and as a form of <a href=\"/wiki/Digital_rights_management\" title=\"Digital rights management\">digital rights management</a>: for example, the scenario where a computer is not only secured for its owner but also secured against its owner as well.<sup id=\"cite_ref-48\" class=\"reference\"><a href=\"#cite_note-48\">&#91;48&#93;</a></sup><sup id=\"cite_ref-49\" class=\"reference\"><a href=\"#cite_note-49\">&#91;49&#93;</a></sup> On April 3, 2000, a judgment was handed down in the case of <i><a href=\"/wiki/United_States_v._Microsoft_Corp.\" title=\"United States v. Microsoft Corp.\">United States v. Microsoft Corp.</a></i>,<sup id=\"cite_ref-50\" class=\"reference\"><a href=\"#cite_note-50\">&#91;50&#93;</a></sup> calling the company an \"abusive monopoly.\"<sup id=\"cite_ref-51\" class=\"reference\"><a href=\"#cite_note-51\">&#91;51&#93;</a></sup> Microsoft later settled with the U.S. Department of Justice in 2004.<sup id=\"cite_ref-CBSCHRON_30-1\" class=\"reference\"><a href=\"#cite_note-CBSCHRON-30\">&#91;30&#93;</a></sup>\n</p><p>On October 25, 2001, Microsoft released <a href=\"/wiki/Windows_XP\" title=\"Windows XP\">Windows XP</a>, unifying the mainstream and NT lines of OS under the NT codebase.<sup id=\"cite_ref-52\" class=\"reference\"><a href=\"#cite_note-52\">&#91;52&#93;</a></sup> The company released the <a href=\"/wiki/Xbox_(console)\" title=\"Xbox (console)\">Xbox</a> later that year, entering the <a href=\"/wiki/Video_game_console\" title=\"Video game console\">video game console</a> market dominated by <a href=\"/wiki/Sony\" title=\"Sony\">Sony</a> and <a href=\"/wiki/Nintendo\" title=\"Nintendo\">Nintendo</a>.<sup id=\"cite_ref-53\" class=\"reference\"><a href=\"#cite_note-53\">&#91;53&#93;</a></sup> In March 2004 the <a href=\"/wiki/European_Union\" title=\"European Union\">European Union</a> brought <a href=\"/wiki/Microsoft_Corp._v._Commission\" title=\"Microsoft Corp. v. Commission\">antitrust legal action against the company</a>, citing it abused its dominance with the Windows OS, resulting in a judgment of €497&#160;million ($613&#160;million) and requiring Microsoft to produce new versions of Windows XP without <a href=\"/wiki/Windows_Media_Player\" title=\"Windows Media Player\">Windows Media Player</a>: Windows XP Home Edition N and Windows XP Professional N.<sup id=\"cite_ref-54\" class=\"reference\"><a href=\"#cite_note-54\">&#91;54&#93;</a></sup><sup id=\"cite_ref-55\" class=\"reference\"><a href=\"#cite_note-55\">&#91;55&#93;</a></sup> In November 2005, the company's second video game console, the <a href=\"/wiki/Xbox_360\" title=\"Xbox 360\">Xbox 360</a>, was released. There were two versions, a basic version for $299.99 and a deluxe version for $399.99.<sup id=\"cite_ref-56\" class=\"reference\"><a href=\"#cite_note-56\">&#91;56&#93;</a></sup>\n</p><p>Increasingly present in the hardware business following Xbox, Microsoft 2006 released the <a href=\"/wiki/Zune\" title=\"Zune\">Zune</a> series of digital media players, a successor of its previous software platform <a href=\"/wiki/Portable_Media_Center\" title=\"Portable Media Center\">Portable Media Center</a>. These expanded on previous hardware commitments from Microsoft following its original <a href=\"/wiki/Microsoft_Mouse\" title=\"Microsoft Mouse\">Microsoft Mouse</a> in 1983; as of 2007 the company sold the best-selling wired keyboard (<a href=\"/wiki/Microsoft_ergonomic_keyboards\" title=\"Microsoft ergonomic keyboards\">Natural Ergonomic Keyboard 4000</a>), mouse (<a href=\"/wiki/IntelliMouse\" title=\"IntelliMouse\">IntelliMouse</a>), and desktop webcam (<a href=\"/wiki/LifeCam\" title=\"LifeCam\">LifeCam</a>) in the United States. That year the company also launched the Surface \"digital table\", later renamed <a href=\"/wiki/Microsoft_PixelSense\" title=\"Microsoft PixelSense\">PixelSense</a>.<sup id=\"cite_ref-57\" class=\"reference\"><a href=\"#cite_note-57\">&#91;57&#93;</a></sup>\n</p>\n<h3><span id=\"2007.E2.80.932011:_Microsoft_Azure.2C_Windows_Vista.2C_Windows_7.2C_and_Microsoft_Stores\"></span><span class=\"mw-headline\" id=\"2007–2011:_Microsoft_Azure,_Windows_Vista,_Windows_7,_and_Microsoft_Stores\">2007–2011: Microsoft Azure, Windows Vista, Windows 7, and Microsoft Stores</span></h3>\n<figure class=\"mw-default-size mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Steve_Ballmer_-_MIX_2008.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/10/Steve_Ballmer_-_MIX_2008.jpg/220px-Steve_Ballmer_-_MIX_2008.jpg\" decoding=\"async\" width=\"220\" height=\"146\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/10/Steve_Ballmer_-_MIX_2008.jpg/330px-Steve_Ballmer_-_MIX_2008.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/10/Steve_Ballmer_-_MIX_2008.jpg/440px-Steve_Ballmer_-_MIX_2008.jpg 2x\" data-file-width=\"4288\" data-file-height=\"2848\" /></a><figcaption>CEO <a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a> at the <a href=\"/wiki/MIX_(Microsoft)\" title=\"MIX (Microsoft)\">MIX</a> event in 2008. In an interview about his management style in 2005, he mentioned that his first priority was to get the people he delegates to in order. Ballmer also emphasized the need to continue pursuing new technologies even if initial attempts fail, citing the original attempts with Windows as an example.<sup id=\"cite_ref-58\" class=\"reference\"><a href=\"#cite_note-58\">&#91;58&#93;</a></sup></figcaption></figure>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg/220px-Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg\" decoding=\"async\" width=\"220\" height=\"123\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg/330px-Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg/440px-Belgique_-_Bruxelles_-_Schuman_-_Berlaymont_-_01.jpg 2x\" data-file-width=\"5180\" data-file-height=\"2894\" /></a><figcaption>Headquarters of the European Commission, which has imposed several fines on Microsoft</figcaption></figure>\n<p>Released in January 2007, the next version of Windows, <a href=\"/wiki/Windows_Vista\" title=\"Windows Vista\">Vista</a>, focused on features, security and a redesigned user interface dubbed <a href=\"/wiki/Windows_Aero\" title=\"Windows Aero\">Aero</a>.<sup id=\"cite_ref-59\" class=\"reference\"><a href=\"#cite_note-59\">&#91;59&#93;</a></sup><sup id=\"cite_ref-60\" class=\"reference\"><a href=\"#cite_note-60\">&#91;60&#93;</a></sup> <a href=\"/wiki/Microsoft_Office_2007\" title=\"Microsoft Office 2007\">Microsoft Office 2007</a>, released at the same time, featured a \"<a href=\"/wiki/Ribbon_(computing)\" title=\"Ribbon (computing)\">Ribbon</a>\" user interface which was a significant departure from its predecessors. Relatively strong sales of both products helped to produce a record profit in 2007.<sup id=\"cite_ref-61\" class=\"reference\"><a href=\"#cite_note-61\">&#91;61&#93;</a></sup> The European Union imposed another fine of €899&#160;million ($1.4&#160;billion) for Microsoft's lack of compliance with the March 2004 judgment on February 27, 2008, saying that the company charged rivals unreasonable prices for key information about its <a href=\"/wiki/Microsoft_SQL_Server\" title=\"Microsoft SQL Server\">workgroup</a> and <a href=\"/wiki/Microsoft_BackOffice_Server\" title=\"Microsoft BackOffice Server\">backoffice</a> servers.<sup id=\"cite_ref-62\" class=\"reference\"><a href=\"#cite_note-62\">&#91;62&#93;</a></sup> Microsoft stated that it was in compliance and that \"these fines are about the past issues that have been resolved\".<sup id=\"cite_ref-63\" class=\"reference\"><a href=\"#cite_note-63\">&#91;63&#93;</a></sup> 2007 also saw the creation of a multi-core unit at Microsoft, following the steps of server companies such as Sun and IBM.<sup id=\"cite_ref-64\" class=\"reference\"><a href=\"#cite_note-64\">&#91;64&#93;</a></sup>\n</p><p>Gates retired from his role as Chief Software Architect on June 27, 2008, a decision announced in June 2006, while retaining other positions related to the company in addition to being an advisor for the company on key projects.<sup id=\"cite_ref-65\" class=\"reference\"><a href=\"#cite_note-65\">&#91;65&#93;</a></sup><sup id=\"cite_ref-66\" class=\"reference\"><a href=\"#cite_note-66\">&#91;66&#93;</a></sup> <a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Azure Services Platform</a>, the company's entry into the <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a> market for Windows, launched on October 27, 2008.<sup id=\"cite_ref-67\" class=\"reference\"><a href=\"#cite_note-67\">&#91;67&#93;</a></sup> On February 12, 2009, Microsoft announced its intent to open a chain of Microsoft-branded retail stores, and on October 22, 2009, the first retail <a href=\"/wiki/Microsoft_Store_(retail)\" title=\"Microsoft Store (retail)\">Microsoft Store</a> opened in <a href=\"/wiki/Scottsdale,_Arizona\" title=\"Scottsdale, Arizona\">Scottsdale, Arizona</a>; the same day <a href=\"/wiki/Windows_7\" title=\"Windows 7\">Windows 7</a> was officially released to the public. Windows 7's focus was on refining Vista with ease-of-use features and performance enhancements, rather than an extensive reworking of Windows.<sup id=\"cite_ref-68\" class=\"reference\"><a href=\"#cite_note-68\">&#91;68&#93;</a></sup><sup id=\"cite_ref-69\" class=\"reference\"><a href=\"#cite_note-69\">&#91;69&#93;</a></sup><sup id=\"cite_ref-70\" class=\"reference\"><a href=\"#cite_note-70\">&#91;70&#93;</a></sup>\n</p><p>As the smartphone industry boomed in the late 2000s, Microsoft had struggled to keep up with its rivals in providing a modern smartphone operating system, falling behind <a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a> and <a href=\"/wiki/Google\" title=\"Google\">Google</a>-sponsored <a href=\"/wiki/Android_(operating_system)\" title=\"Android (operating system)\">Android</a> in the United States.<sup id=\"cite_ref-71\" class=\"reference\"><a href=\"#cite_note-71\">&#91;71&#93;</a></sup> As a result, in 2010 Microsoft revamped their aging flagship mobile operating system, <a href=\"/wiki/Windows_Mobile\" title=\"Windows Mobile\">Windows Mobile</a>, replacing it with the new <a href=\"/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a> OS that was released in October that year.<sup id=\"cite_ref-72\" class=\"reference\"><a href=\"#cite_note-72\">&#91;72&#93;</a></sup><sup id=\"cite_ref-73\" class=\"reference\"><a href=\"#cite_note-73\">&#91;73&#93;</a></sup> It used a new user interface design language, codenamed \"Metro,\" which prominently used simple shapes, typography, and iconography, utilizing the concept of minimalism. Microsoft implemented a new strategy for the software industry, providing a consistent user experience across all smartphones using the Windows Phone OS. It launched an alliance with <a href=\"/wiki/Nokia\" title=\"Nokia\">Nokia</a> in 2011 and Microsoft worked closely with the company to co-develop Windows Phone,<sup id=\"cite_ref-74\" class=\"reference\"><a href=\"#cite_note-74\">&#91;74&#93;</a></sup> but remained partners with long-time Windows Mobile OEM <a href=\"/wiki/HTC\" title=\"HTC\">HTC</a>.<sup id=\"cite_ref-75\" class=\"reference\"><a href=\"#cite_note-75\">&#91;75&#93;</a></sup> Microsoft is a founding member of the <a href=\"/wiki/Open_Networking_Foundation\" title=\"Open Networking Foundation\">Open Networking Foundation</a> started on March 23, 2011. Fellow founders were <a href=\"/wiki/Google\" title=\"Google\">Google</a>, <a href=\"/wiki/Hewlett_Packard_Enterprise_Networking\" title=\"Hewlett Packard Enterprise Networking\">HP Networking</a>, <a href=\"/wiki/Yahoo!\" title=\"Yahoo!\">Yahoo!</a>, <a href=\"/wiki/Verizon_Communications\" class=\"mw-redirect\" title=\"Verizon Communications\">Verizon Communications</a>, <a href=\"/wiki/Deutsche_Telekom\" title=\"Deutsche Telekom\">Deutsche Telekom</a> and 17 other companies. This nonprofit organization is focused on providing support for a <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a> initiative called Software-Defined Networking.<sup id=\"cite_ref-76\" class=\"reference\"><a href=\"#cite_note-76\">&#91;76&#93;</a></sup> The initiative is meant to speed innovation through simple software changes in telecommunications networks, wireless networks, data centers, and other networking areas.<sup id=\"cite_ref-77\" class=\"reference\"><a href=\"#cite_note-77\">&#91;77&#93;</a></sup>\n</p>\n<h3><span id=\"2011.E2.80.932014:_Windows_8.2F8.1.2C_Xbox_One.2C_Outlook.com.2C_and_Surface_devices\"></span><span class=\"mw-headline\" id=\"2011–2014:_Windows_8/8.1,_Xbox_One,_Outlook.com,_and_Surface_devices\">2011–2014: Windows 8/8.1, Xbox One, Outlook.com, and Surface devices</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:SurfacePro3.JPG\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/1a/SurfacePro3.JPG/220px-SurfacePro3.JPG\" decoding=\"async\" width=\"220\" height=\"146\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/1a/SurfacePro3.JPG/330px-SurfacePro3.JPG 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1a/SurfacePro3.JPG/440px-SurfacePro3.JPG 2x\" data-file-width=\"4928\" data-file-height=\"3264\" /></a><figcaption><a href=\"/wiki/Surface_Pro_3\" title=\"Surface Pro 3\">Surface Pro 3</a>, part of the <a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Surface</a> series of laplets by Microsoft</figcaption></figure>\n<p>Following the release of <a href=\"/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a>, Microsoft undertook a gradual <a href=\"/wiki/Rebranding\" title=\"Rebranding\">rebranding</a> of its product range throughout 2011 and 2012, with the corporation's logos, products, services, and websites adopting the principles and concepts of the <a href=\"/wiki/Metro_(design_language)\" title=\"Metro (design language)\">Metro design language</a>.<sup id=\"cite_ref-78\" class=\"reference\"><a href=\"#cite_note-78\">&#91;78&#93;</a></sup> Microsoft unveiled <a href=\"/wiki/Windows_8\" title=\"Windows 8\">Windows 8</a>, an operating system designed to power both personal computers and <a href=\"/wiki/Tablet_computer\" title=\"Tablet computer\">tablet computers</a>, in Taipei in June 2011.<sup id=\"cite_ref-79\" class=\"reference\"><a href=\"#cite_note-79\">&#91;79&#93;</a></sup> A developer preview was released on September 13, which was subsequently replaced by a consumer preview on February 29, 2012, and released to the public in May.<sup id=\"cite_ref-80\" class=\"reference\"><a href=\"#cite_note-80\">&#91;80&#93;</a></sup> The <a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Surface</a> was unveiled on June 18, becoming the first computer in the company's history to have its hardware made by Microsoft.<sup id=\"cite_ref-81\" class=\"reference\"><a href=\"#cite_note-81\">&#91;81&#93;</a></sup><sup id=\"cite_ref-VF2012_82-0\" class=\"reference\"><a href=\"#cite_note-VF2012-82\">&#91;82&#93;</a></sup> On June 25, Microsoft paid US$1.2&#160;billion to buy the social network <a href=\"/wiki/Yammer\" class=\"mw-redirect\" title=\"Yammer\">Yammer</a>.<sup id=\"cite_ref-83\" class=\"reference\"><a href=\"#cite_note-83\">&#91;83&#93;</a></sup> On July 31, they launched the <a href=\"/wiki/Outlook.com\" title=\"Outlook.com\">Outlook.com</a> <a href=\"/wiki/Webmail\" title=\"Webmail\">webmail service</a> to compete with <a href=\"/wiki/Gmail\" title=\"Gmail\">Gmail</a>.<sup id=\"cite_ref-84\" class=\"reference\"><a href=\"#cite_note-84\">&#91;84&#93;</a></sup> On September 4, 2012, Microsoft released <a href=\"/wiki/Windows_Server_2012\" title=\"Windows Server 2012\">Windows Server 2012</a>.<sup id=\"cite_ref-85\" class=\"reference\"><a href=\"#cite_note-85\">&#91;85&#93;</a></sup>\n</p><p>In July 2012, Microsoft sold its 50% stake in MSNBC, which it had run as a joint venture with NBC since 1996.<sup id=\"cite_ref-86\" class=\"reference\"><a href=\"#cite_note-86\">&#91;86&#93;</a></sup> On October 1, Microsoft announced its intention to launch a news operation, part of a new-look <a href=\"/wiki/MSN\" title=\"MSN\">MSN</a>, with Windows 8 later in the month.<sup id=\"cite_ref-87\" class=\"reference\"><a href=\"#cite_note-87\">&#91;87&#93;</a></sup> On October 26, 2012, Microsoft launched Windows 8 and the <a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Microsoft Surface</a>.<sup id=\"cite_ref-VF2012_82-1\" class=\"reference\"><a href=\"#cite_note-VF2012-82\">&#91;82&#93;</a></sup><sup id=\"cite_ref-88\" class=\"reference\"><a href=\"#cite_note-88\">&#91;88&#93;</a></sup> Three days later, <a href=\"/wiki/Windows_Phone_8\" title=\"Windows Phone 8\">Windows Phone 8</a> was launched.<sup id=\"cite_ref-89\" class=\"reference\"><a href=\"#cite_note-89\">&#91;89&#93;</a></sup> To cope with the potential for an increase in demand for products and services, Microsoft opened a number of \"holiday stores\" across the U.S. to complement the increasing number of \"bricks-and-mortar\" Microsoft Stores that opened in 2012.<sup id=\"cite_ref-90\" class=\"reference\"><a href=\"#cite_note-90\">&#91;90&#93;</a></sup> On March 29, 2013, Microsoft launched a Patent Tracker.<sup id=\"cite_ref-91\" class=\"reference\"><a href=\"#cite_note-91\">&#91;91&#93;</a></sup>\n</p><p>In August 2012, the <a href=\"/wiki/New_York_City_Police_Department\" title=\"New York City Police Department\">New York City Police Department</a> announced a partnership with Microsoft for the development of the <a href=\"/wiki/Domain_Awareness_System\" title=\"Domain Awareness System\">Domain Awareness System</a> which is used for <a href=\"/wiki/Police_surveillance_in_New_York_City\" title=\"Police surveillance in New York City\">Police surveillance in New York City</a>.<sup id=\"cite_ref-92\" class=\"reference\"><a href=\"#cite_note-92\">&#91;92&#93;</a></sup>\n</p>\n<figure class=\"mw-default-size mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Microsoft-Xbox-One-Console-Set-wKinect.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/05/Microsoft-Xbox-One-Console-Set-wKinect.jpg/220px-Microsoft-Xbox-One-Console-Set-wKinect.jpg\" decoding=\"async\" width=\"220\" height=\"144\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/05/Microsoft-Xbox-One-Console-Set-wKinect.jpg/330px-Microsoft-Xbox-One-Console-Set-wKinect.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/05/Microsoft-Xbox-One-Console-Set-wKinect.jpg/440px-Microsoft-Xbox-One-Console-Set-wKinect.jpg 2x\" data-file-width=\"7680\" data-file-height=\"5040\" /></a><figcaption>The <a href=\"/wiki/Xbox_One\" title=\"Xbox One\">Xbox One</a> console, released in 2013</figcaption></figure>\n<p>The <a href=\"/wiki/Kinect\" title=\"Kinect\">Kinect</a>, a motion-sensing input device made by Microsoft and designed as a <a href=\"/wiki/Game_controller\" title=\"Game controller\">video game controller</a>, first introduced in November 2010, was upgraded for the 2013 release of the <a href=\"/wiki/Xbox_One\" title=\"Xbox One\">Xbox One</a> video game console. Kinect's capabilities were revealed in May 2013: an ultra-wide 1080p camera, function in the dark due to an infrared sensor, higher-end processing power and new software, the ability to distinguish between fine movements (such as a thumb movement), and determining a user's heart rate by looking at their face.<sup id=\"cite_ref-93\" class=\"reference\"><a href=\"#cite_note-93\">&#91;93&#93;</a></sup> Microsoft filed a patent application in 2011 that suggests that the corporation may use the Kinect camera system to monitor the behavior of television viewers as part of a plan to make the viewing experience more interactive. On July 19, 2013, Microsoft stocks suffered their biggest one-day percentage sell-off since the year 2000, after its fourth-quarter report raised concerns among investors on the poor showings of both Windows 8 and the Surface tablet. Microsoft suffered a loss of more than US$32&#160;billion.<sup id=\"cite_ref-94\" class=\"reference\"><a href=\"#cite_note-94\">&#91;94&#93;</a></sup>\n</p><p>In line with the maturing PC business, in July 2013, Microsoft announced that it would reorganize the business into four new business divisions, namely Operating systems, Apps, Cloud, and Devices. All previous divisions will be dissolved into new divisions without any workforce cuts.<sup id=\"cite_ref-95\" class=\"reference\"><a href=\"#cite_note-95\">&#91;95&#93;</a></sup> On September 3, 2013, Microsoft agreed to buy <a href=\"/wiki/Nokia\" title=\"Nokia\">Nokia</a>'s mobile unit for $7&#160;billion,<sup id=\"cite_ref-96\" class=\"reference\"><a href=\"#cite_note-96\">&#91;96&#93;</a></sup> following <a href=\"/wiki/Amy_Hood\" title=\"Amy Hood\">Amy Hood</a> taking the role of CFO.<sup id=\"cite_ref-97\" class=\"reference\"><a href=\"#cite_note-97\">&#91;97&#93;</a></sup>\n</p>\n<div style=\"clear:both;\" class=\"\"></div>\n<h3><span id=\"2014.E2.80.932020:_Windows_10.2C_Microsoft_Edge.2C_and_HoloLens\"></span><span class=\"mw-headline\" id=\"2014–2020:_Windows_10,_Microsoft_Edge,_and_HoloLens\">2014–2020: Windows 10, Microsoft Edge, and HoloLens</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Satya_smiling-print.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/19/Satya_smiling-print.jpg/220px-Satya_smiling-print.jpg\" decoding=\"async\" width=\"220\" height=\"147\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/1/19/Satya_smiling-print.jpg/330px-Satya_smiling-print.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/19/Satya_smiling-print.jpg/440px-Satya_smiling-print.jpg 2x\" data-file-width=\"5212\" data-file-height=\"3475\" /></a><figcaption><a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a> succeeded <a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a> as the <a href=\"/wiki/Chief_executive_officer\" title=\"Chief executive officer\">CEO</a> of Microsoft in February 2014.</figcaption></figure>\n<p>On February 4, 2014, <a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a> stepped down as <a href=\"/wiki/Chief_executive_officer\" title=\"Chief executive officer\">CEO</a> of Microsoft and was succeeded by <a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a>, who previously led Microsoft's Cloud and Enterprise division.<sup id=\"cite_ref-98\" class=\"reference\"><a href=\"#cite_note-98\">&#91;98&#93;</a></sup> On the same day, <a href=\"/wiki/John_W._Thompson\" title=\"John W. Thompson\">John W. Thompson</a> took on the role of chairman, in place of Bill Gates, who continued to participate as a technology advisor.<sup id=\"cite_ref-chairex_99-0\" class=\"reference\"><a href=\"#cite_note-chairex-99\">&#91;99&#93;</a></sup> Thompson became the second chairman in Microsoft's history.<sup id=\"cite_ref-100\" class=\"reference\"><a href=\"#cite_note-100\">&#91;100&#93;</a></sup> On April 25, 2014, Microsoft acquired Nokia Devices and Services for $7.2&#160;billion.<sup id=\"cite_ref-101\" class=\"reference\"><a href=\"#cite_note-101\">&#91;101&#93;</a></sup> This new subsidiary was renamed Microsoft Mobile Oy.<sup id=\"cite_ref-102\" class=\"reference\"><a href=\"#cite_note-102\">&#91;102&#93;</a></sup> On September 15, 2014, Microsoft acquired the video game development company <a href=\"/wiki/Mojang\" class=\"mw-redirect\" title=\"Mojang\">Mojang</a>, best known for <i><a href=\"/wiki/Minecraft\" title=\"Minecraft\">Minecraft</a></i>, for $2.5&#160;billion.<sup id=\"cite_ref-103\" class=\"reference\"><a href=\"#cite_note-103\">&#91;103&#93;</a></sup> On June 8, 2017, Microsoft acquired <a href=\"/wiki/Hexadite\" class=\"mw-redirect\" title=\"Hexadite\">Hexadite</a>, an Israeli security firm, for $100&#160;million.<sup id=\"cite_ref-104\" class=\"reference\"><a href=\"#cite_note-104\">&#91;104&#93;</a></sup><sup id=\"cite_ref-105\" class=\"reference\"><a href=\"#cite_note-105\">&#91;105&#93;</a></sup>\n</p><p>On January 21, 2015, Microsoft announced the release of their first <a href=\"/wiki/Interactive_whiteboard\" title=\"Interactive whiteboard\">Interactive whiteboard</a>, <a href=\"/wiki/Surface_Hub\" title=\"Surface Hub\">Microsoft Surface Hub</a>.<sup id=\"cite_ref-106\" class=\"reference\"><a href=\"#cite_note-106\">&#91;106&#93;</a></sup> On July 29, 2015, <a href=\"/wiki/Windows_10\" title=\"Windows 10\">Windows 10</a> was released,<sup id=\"cite_ref-107\" class=\"reference\"><a href=\"#cite_note-107\">&#91;107&#93;</a></sup> with its server sibling, <a href=\"/wiki/Windows_Server_2016\" title=\"Windows Server 2016\">Windows Server 2016</a>, released in September 2016. In Q1 2015, Microsoft was the third largest maker of mobile phones, selling 33&#160;million units (7.2% of all). While a large majority (at least 75%) of them do not run any version of <a href=\"/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a>— those other phones are not categorized as <a href=\"/wiki/Smartphone\" title=\"Smartphone\">smartphones</a> by Gartner&#160;&#8211;&#32;in the same time frame 8&#160;million Windows smartphones (2.5% of all smartphones) were made by all manufacturers (but mostly by Microsoft).<sup id=\"cite_ref-108\" class=\"reference\"><a href=\"#cite_note-108\">&#91;108&#93;</a></sup> Microsoft's share of the U.S. smartphone market in January 2016 was 2.7%.<sup id=\"cite_ref-109\" class=\"reference\"><a href=\"#cite_note-109\">&#91;109&#93;</a></sup> During the summer of 2015 the company lost $7.6&#160;billion related to its mobile-phone business, firing 7,800 employees.<sup id=\"cite_ref-WSJ:_Microsoft_to_Streamline_Smartphone_Hardware_Business_110-0\" class=\"reference\"><a href=\"#cite_note-WSJ:_Microsoft_to_Streamline_Smartphone_Hardware_Business-110\">&#91;110&#93;</a></sup>\n</p><p>On March 1, 2016, Microsoft announced the merger of its PC and Xbox divisions, with <a href=\"/wiki/Phil_Spencer_(business_executive)\" title=\"Phil Spencer (business executive)\">Phil Spencer</a> announcing that Universal Windows Platform (UWP) apps would be the focus for Microsoft's gaming in the future.<sup id=\"cite_ref-111\" class=\"reference\"><a href=\"#cite_note-111\">&#91;111&#93;</a></sup> On January 24, 2017, Microsoft showcased Intune for Education at the <a href=\"/wiki/BETT\" title=\"BETT\">BETT</a> 2017 education technology conference in <a href=\"/wiki/London\" title=\"London\">London</a>.<sup id=\"cite_ref-112\" class=\"reference\"><a href=\"#cite_note-112\">&#91;112&#93;</a></sup> Intune for Education is a new cloud-based application and device management service for the education sector.<sup id=\"cite_ref-113\" class=\"reference\"><a href=\"#cite_note-113\">&#91;113&#93;</a></sup> In May 2016, the company announced it was laying off 1,850 workers, and taking an impairment and restructuring charge of $950&#160;million.<sup id=\"cite_ref-WSJ:_Microsoft_to_Streamline_Smartphone_Hardware_Business_110-1\" class=\"reference\"><a href=\"#cite_note-WSJ:_Microsoft_to_Streamline_Smartphone_Hardware_Business-110\">&#91;110&#93;</a></sup>\n</p><p>In June 2016, Microsoft announced a project named Microsoft Azure Information Protection. It aims to help enterprises protect their data as it moves between servers and devices.<sup id=\"cite_ref-114\" class=\"reference\"><a href=\"#cite_note-114\">&#91;114&#93;</a></sup> In November 2016, Microsoft joined the <a href=\"/wiki/Linux_Foundation\" title=\"Linux Foundation\">Linux Foundation</a> as a Platinum member during Microsoft's Connect(); developer event in New York.<sup id=\"cite_ref-115\" class=\"reference\"><a href=\"#cite_note-115\">&#91;115&#93;</a></sup> The cost of each Platinum membership is US$500,000 per year.<sup id=\"cite_ref-116\" class=\"reference\"><a href=\"#cite_note-116\">&#91;116&#93;</a></sup> Some analysts deemed this unthinkable ten years prior, however, as in 2001 then-CEO Steve Ballmer called Linux \"cancer\".<sup id=\"cite_ref-117\" class=\"reference\"><a href=\"#cite_note-117\">&#91;117&#93;</a></sup> Microsoft planned to launch a preview of Intune for Education \"in the coming weeks,\" with general availability scheduled for spring 2017, priced at $30 per device, or through volume licensing agreements.<sup id=\"cite_ref-118\" class=\"reference\"><a href=\"#cite_note-118\">&#91;118&#93;</a></sup>\n</p>\n<figure class=\"mw-default-size mw-halign-left\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Nokia_%26_Microsoft_Lumia_devices.png\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Nokia_%26_Microsoft_Lumia_devices.png/220px-Nokia_%26_Microsoft_Lumia_devices.png\" decoding=\"async\" width=\"220\" height=\"150\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Nokia_%26_Microsoft_Lumia_devices.png/330px-Nokia_%26_Microsoft_Lumia_devices.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Nokia_%26_Microsoft_Lumia_devices.png/440px-Nokia_%26_Microsoft_Lumia_devices.png 2x\" data-file-width=\"632\" data-file-height=\"432\" /></a><figcaption>The <a href=\"/wiki/Nokia_Lumia_1320\" title=\"Nokia Lumia 1320\">Nokia Lumia 1320</a>, the <a href=\"/wiki/Microsoft_Lumia_535\" title=\"Microsoft Lumia 535\">Microsoft Lumia 535</a> and the <a href=\"/wiki/Nokia_Lumia_530\" title=\"Nokia Lumia 530\">Nokia Lumia 530</a>, which all run on one of the now-discontinued <a href=\"/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a> operating systems</figcaption></figure>\n<p>In January 2018, Microsoft patched <a href=\"/wiki/Windows_10\" title=\"Windows 10\">Windows 10</a> to account for CPU problems related to <a href=\"/wiki/Meltdown_(security_vulnerability)\" title=\"Meltdown (security vulnerability)\">Intel's Meltdown security breach</a>. The patch led to issues with the <a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Microsoft Azure</a> virtual machines reliant on Intel's CPU architecture. On January 12, Microsoft released <a href=\"/wiki/PowerShell\" title=\"PowerShell\">PowerShell Core 6.0</a> for the <a href=\"/wiki/MacOS\" title=\"MacOS\">macOS</a> and <a href=\"/wiki/Linux\" title=\"Linux\">Linux</a> operating systems.<sup id=\"cite_ref-auto_119-0\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> In February 2018, Microsoft killed notification support for their <a href=\"/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a> devices which effectively ended firmware updates for the discontinued devices.<sup id=\"cite_ref-auto_119-1\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> In March 2018, Microsoft recalled <a href=\"/wiki/Windows_10_editions#Discontinued_editions\" title=\"Windows 10 editions\">Windows 10 S</a> to change it to a mode for the Windows operating system rather than a separate and unique operating system. In March the company also established guidelines that censor users of <a href=\"/wiki/Office_365\" class=\"mw-redirect\" title=\"Office 365\">Office 365</a> from using <a href=\"/wiki/Profanity\" title=\"Profanity\">profanity</a> in private documents.<sup id=\"cite_ref-auto_119-2\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup>\n</p><p>In April 2018, Microsoft released the source code for Windows <a href=\"/wiki/File_Manager_(Windows)\" class=\"mw-redirect\" title=\"File Manager (Windows)\">File Manager</a> under the <a href=\"/wiki/MIT_License\" title=\"MIT License\">MIT License</a> to celebrate the program's 20th anniversary. In April the company further expressed willingness to embrace open source initiatives by announcing <a href=\"/wiki/Azure_Sphere\" title=\"Azure Sphere\">Azure Sphere</a> as its own derivative of the <a href=\"/wiki/Linux\" title=\"Linux\">Linux</a> operating system.<sup id=\"cite_ref-auto_119-3\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> In May 2018, Microsoft partnered with 17 American intelligence agencies to develop <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a> products. The project is dubbed \"Azure Government\" and has ties to the <a href=\"/wiki/Joint_Enterprise_Defense_Infrastructure\" title=\"Joint Enterprise Defense Infrastructure\">Joint Enterprise Defense Infrastructure</a> (JEDI) surveillance program.<sup id=\"cite_ref-auto_119-4\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> On June 4, 2018, Microsoft officially announced the acquisition of <a href=\"/wiki/GitHub\" title=\"GitHub\">GitHub</a> for $7.5&#160;billion, a deal that closed on October 26, 2018.<sup id=\"cite_ref-120\" class=\"reference\"><a href=\"#cite_note-120\">&#91;120&#93;</a></sup><sup id=\"cite_ref-121\" class=\"reference\"><a href=\"#cite_note-121\">&#91;121&#93;</a></sup> On July 10, 2018, Microsoft revealed the <a href=\"/wiki/Microsoft_Surface_Go\" class=\"mw-redirect\" title=\"Microsoft Surface Go\">Surface Go</a> platform to the public. Later in the month, it converted <a href=\"/wiki/Microsoft_Teams\" title=\"Microsoft Teams\">Microsoft Teams</a> to <a href=\"/wiki/Gratis_versus_libre\" title=\"Gratis versus libre\">gratis</a>.<sup id=\"cite_ref-auto_119-5\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> In August 2018, Microsoft released two projects called Microsoft AccountGuard and Defending Democracy. It also unveiled <a href=\"/wiki/Qualcomm_Snapdragon\" title=\"Qualcomm Snapdragon\">Snapdragon 850</a> compatibility for <a href=\"/wiki/Windows_10\" title=\"Windows 10\">Windows 10</a> on the <a href=\"/wiki/ARM_architecture\" class=\"mw-redirect\" title=\"ARM architecture\">ARM architecture</a>.<sup id=\"cite_ref-122\" class=\"reference\"><a href=\"#cite_note-122\">&#91;122&#93;</a></sup><sup id=\"cite_ref-123\" class=\"reference\"><a href=\"#cite_note-123\">&#91;123&#93;</a></sup><sup id=\"cite_ref-auto_119-6\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup>\n</p>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_(29794543715).jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg/170px-Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg\" decoding=\"async\" width=\"170\" height=\"255\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg/255px-Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg/340px-Apollo_11_astronaut_Buzz_Aldrin_tries_out_Microsoft_HoloLens_%2829794543715%29.jpg 2x\" data-file-width=\"2000\" data-file-height=\"3000\" /></a><figcaption><a href=\"/wiki/Apollo_11\" title=\"Apollo 11\">Apollo 11</a> astronaut <a href=\"/wiki/Buzz_Aldrin\" title=\"Buzz Aldrin\">Buzz Aldrin</a> using a <a href=\"/wiki/Microsoft_HoloLens\" title=\"Microsoft HoloLens\">Microsoft HoloLens</a> mixed reality headset in September 2016</figcaption></figure>\n<p>In August 2018, <a href=\"/wiki/Toyota_Tsusho\" title=\"Toyota Tsusho\">Toyota Tsusho</a> began a partnership with Microsoft to create <a href=\"/wiki/Fish_farming\" title=\"Fish farming\">fish farming</a> tools using the Microsoft Azure application suite for <a href=\"/wiki/Internet_of_things\" title=\"Internet of things\">Internet of things</a> (IoT) technologies related to water management. Developed in part by researchers from <a href=\"/wiki/Kindai_University\" title=\"Kindai University\">Kindai University</a>, the water pump mechanisms use <a href=\"/wiki/Artificial_intelligence\" title=\"Artificial intelligence\">artificial intelligence</a> to count the number of fish on a <a href=\"/wiki/Conveyor_belt\" title=\"Conveyor belt\">conveyor belt</a>, analyze the number of fish, and deduce the effectiveness of water flow from the data the fish provide. The specific <a href=\"/wiki/Computer_program\" title=\"Computer program\">computer programs</a> used in the process fall under the Azure Machine Learning and the Azure IoT Hub platforms.<sup id=\"cite_ref-124\" class=\"reference\"><a href=\"#cite_note-124\">&#91;124&#93;</a></sup>\n</p><p>In September 2018, Microsoft discontinued <a href=\"/wiki/Skype\" title=\"Skype\">Skype Classic</a>.<sup id=\"cite_ref-auto_119-7\" class=\"reference\"><a href=\"#cite_note-auto-119\">&#91;119&#93;</a></sup> On October 10, 2018, Microsoft joined the <a href=\"/wiki/Open_Invention_Network\" title=\"Open Invention Network\">Open Invention Network</a> community despite holding more than 60,000 patents.<sup id=\"cite_ref-125\" class=\"reference\"><a href=\"#cite_note-125\">&#91;125&#93;</a></sup> In November 2018, Microsoft agreed to supply 100,000 <a href=\"/wiki/Microsoft_HoloLens\" title=\"Microsoft HoloLens\">Microsoft HoloLens</a> headsets to the <a href=\"/wiki/United_States_Armed_Forces\" title=\"United States Armed Forces\">United States military</a> in order to \"increase lethality by enhancing the ability to detect, decide and engage before the enemy.\"<sup id=\"cite_ref-126\" class=\"reference\"><a href=\"#cite_note-126\">&#91;126&#93;</a></sup> In November 2018, Microsoft introduced Azure Multi-Factor Authentication for Microsoft Azure.<sup id=\"cite_ref-R1BDM_127-0\" class=\"reference\"><a href=\"#cite_note-R1BDM-127\">&#91;127&#93;</a></sup> In December 2018, Microsoft announced <a href=\"/wiki/Project_Mu\" class=\"mw-redirect\" title=\"Project Mu\">Project Mu</a>, an <a href=\"/wiki/Open_source\" title=\"Open source\">open source</a> release of the <a href=\"/wiki/Unified_Extensible_Firmware_Interface\" class=\"mw-redirect\" title=\"Unified Extensible Firmware Interface\">Unified Extensible Firmware Interface</a> (UEFI) core used in <a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Microsoft Surface</a> and <a href=\"/wiki/Hyper-V\" title=\"Hyper-V\">Hyper-V</a> products. The project promotes the idea of <a href=\"/wiki/Project_Mu\" class=\"mw-redirect\" title=\"Project Mu\">Firmware as a Service</a>.<sup id=\"cite_ref-128\" class=\"reference\"><a href=\"#cite_note-128\">&#91;128&#93;</a></sup> In the same month, Microsoft announced the <a href=\"/wiki/Open_source\" title=\"Open source\">open source</a> implementation of <a href=\"/wiki/Windows_Forms\" title=\"Windows Forms\">Windows Forms</a> and the <a href=\"/wiki/Windows_Presentation_Foundation\" title=\"Windows Presentation Foundation\">Windows Presentation Foundation</a> (WPF) which will allow for further movement of the company toward the transparent release of key frameworks used in developing Windows desktop applications and software. December also saw the company discontinue the <a href=\"/wiki/Microsoft_Edge\" title=\"Microsoft Edge\">Microsoft Edge</a> project in favor of <a href=\"/wiki/Chromium_(web_browser)\" title=\"Chromium (web browser)\">Chromium</a> backends for their browsers.<sup id=\"cite_ref-R1BDM_127-1\" class=\"reference\"><a href=\"#cite_note-R1BDM-127\">&#91;127&#93;</a></sup>\n</p><p>On February 20, 2019, Microsoft Corp said it will offer its cyber security service AccountGuard to 12 new markets in Europe including Germany, France and Spain, to close security gaps and protect customers in political space from hacking.<sup id=\"cite_ref-129\" class=\"reference\"><a href=\"#cite_note-129\">&#91;129&#93;</a></sup> In February 2019, hundreds of Microsoft employees protested the company's <a href=\"/wiki/War_profiteering\" title=\"War profiteering\">war profiteering</a> from a $480&#160;million contract to develop <a href=\"/wiki/Virtual_reality_headset\" title=\"Virtual reality headset\">virtual reality headsets</a> for the <a href=\"/wiki/United_States_Army\" title=\"United States Army\">United States Army</a>.<sup id=\"cite_ref-130\" class=\"reference\"><a href=\"#cite_note-130\">&#91;130&#93;</a></sup>\n</p>\n<h3><span id=\"2020.E2.80.93present:_Acquisitions.2C_Xbox_Series_X.2FS.2C_and_Windows_11\"></span><span class=\"mw-headline\" id=\"2020–present:_Acquisitions,_Xbox_Series_X/S,_and_Windows_11\">2020–present: Acquisitions, Xbox Series X/S, and Windows 11</span></h3>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1033289096\"><div role=\"note\" class=\"hatnote navigation-not-searchable\">See also: <a href=\"/wiki/Acquisition_of_Activision_Blizzard_by_Microsoft\" title=\"Acquisition of Activision Blizzard by Microsoft\">Acquisition of Activision Blizzard by Microsoft</a></div>\n<p>On March 26, 2020, Microsoft announced it was acquiring Affirmed Networks for about $1.35&#160;billion.<sup id=\"cite_ref-131\" class=\"reference\"><a href=\"#cite_note-131\">&#91;131&#93;</a></sup><sup id=\"cite_ref-132\" class=\"reference\"><a href=\"#cite_note-132\">&#91;132&#93;</a></sup> Due to the <a href=\"/wiki/COVID-19_pandemic\" title=\"COVID-19 pandemic\">COVID-19 pandemic</a>, Microsoft closed all of its retail stores indefinitely due to health concerns.<sup id=\"cite_ref-133\" class=\"reference\"><a href=\"#cite_note-133\">&#91;133&#93;</a></sup> On July 22, 2020, Microsoft announced plans to close its <a href=\"/wiki/Mixer_(service)\" title=\"Mixer (service)\">Mixer</a> service, planning to move existing partners to <a href=\"/wiki/Facebook_Gaming\" class=\"mw-redirect\" title=\"Facebook Gaming\">Facebook Gaming</a>.<sup id=\"cite_ref-134\" class=\"reference\"><a href=\"#cite_note-134\">&#91;134&#93;</a></sup>\n</p><p>On July 31, 2020, it was reported that Microsoft was in talks to acquire <a href=\"/wiki/TikTok\" title=\"TikTok\">TikTok</a> after the <a href=\"/wiki/Presidency_of_Donald_Trump\" title=\"Presidency of Donald Trump\">Trump administration</a> ordered <a href=\"/wiki/ByteDance\" title=\"ByteDance\">ByteDance</a> to <a href=\"/wiki/Divestment\" title=\"Divestment\">divest</a> ownership of the application to the U.S.<sup id=\"cite_ref-135\" class=\"reference\"><a href=\"#cite_note-135\">&#91;135&#93;</a></sup> On August 3, 2020, after speculation on the deal, <a href=\"/wiki/Donald_Trump\" title=\"Donald Trump\">Donald Trump</a> stated that Microsoft could buy the application, however, it should be completed by September 15, 2020, and that the <a href=\"/wiki/United_States_Department_of_the_Treasury\" title=\"United States Department of the Treasury\">United States Department of the Treasury</a> should receive a portion if it were to go through.<sup id=\"cite_ref-136\" class=\"reference\"><a href=\"#cite_note-136\">&#91;136&#93;</a></sup>\n</p><p>On August 5, 2020, Microsoft stopped its <a href=\"/wiki/XCloud\" class=\"mw-redirect\" title=\"XCloud\">xCloud</a> game streaming test for <a href=\"/wiki/List_of_iOS_devices\" class=\"mw-redirect\" title=\"List of iOS devices\">iOS devices</a>. According to Microsoft, the future of xCloud on iOS remains unclear and potentially out of Microsoft's hands. <a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a> has imposed a strict limit on <a href=\"/wiki/Remote_Desktop_Services\" title=\"Remote Desktop Services\">\"remote desktop clients\"</a> which means applications are only allowed to connect to a user-owned host device or gaming console owned by the user.<sup id=\"cite_ref-137\" class=\"reference\"><a href=\"#cite_note-137\">&#91;137&#93;</a></sup> On September 21, 2020, Microsoft announced its intent to acquire video game company <a href=\"/wiki/ZeniMax_Media\" title=\"ZeniMax Media\">ZeniMax Media</a>, the parent company of <a href=\"/wiki/Bethesda_Softworks\" title=\"Bethesda Softworks\">Bethesda Softworks</a>, for about $7.5&#160;billion, with the deal expected to occur in the second half of 2021 fiscal year.<sup id=\"cite_ref-138\" class=\"reference\"><a href=\"#cite_note-138\">&#91;138&#93;</a></sup> On March 9, 2021, the acquisition was finalized and ZeniMax Media became part of Microsoft's Xbox Game Studios division.<sup id=\"cite_ref-139\" class=\"reference\"><a href=\"#cite_note-139\">&#91;139&#93;</a></sup> The total price of the deal was $8.1 billion.<sup id=\"cite_ref-140\" class=\"reference\"><a href=\"#cite_note-140\">&#91;140&#93;</a></sup>\n</p><p>On September 22, 2020, Microsoft announced that it had an exclusive license to use <a href=\"/wiki/OpenAI\" title=\"OpenAI\">OpenAI</a>'s GPT-3 artificial intelligence language generator.<sup id=\"cite_ref-141\" class=\"reference\"><a href=\"#cite_note-141\">&#91;141&#93;</a></sup> The previous version of <a href=\"/wiki/GPT-3\" title=\"GPT-3\">GPT-3</a>, called <a href=\"/wiki/GPT-2\" title=\"GPT-2\">GPT-2</a>, made headlines for being \"too dangerous to release\" and had numerous capabilities, including designing websites, prescribing medication, answering questions, and penning articles.<sup id=\"cite_ref-142\" class=\"reference\"><a href=\"#cite_note-142\">&#91;142&#93;</a></sup>\n</p><p>On November 10, 2020, Microsoft released the <a href=\"/wiki/Xbox_Series_X_and_Series_S\" title=\"Xbox Series X and Series S\">Xbox Series X and Xbox Series S</a> video game consoles.<sup id=\"cite_ref-143\" class=\"reference\"><a href=\"#cite_note-143\">&#91;143&#93;</a></sup>\n</p><p>In April 2021, Microsoft announced it would buy <a href=\"/wiki/Nuance_Communications\" title=\"Nuance Communications\">Nuance Communications</a> for approximately $16 billion.<sup id=\"cite_ref-144\" class=\"reference\"><a href=\"#cite_note-144\">&#91;144&#93;</a></sup> The acquisition of Nuance was completed in March 2022.<sup id=\"cite_ref-145\" class=\"reference\"><a href=\"#cite_note-145\">&#91;145&#93;</a></sup> In 2021, in part due to the strong quarterly earnings spurred by the <a href=\"/wiki/COVID-19_pandemic\" title=\"COVID-19 pandemic\">COVID-19 pandemic</a>, Microsoft's valuation came to nearly $2 trillion. The increased necessity for <a href=\"/wiki/Remote_work\" title=\"Remote work\">remote work</a> and <a href=\"/wiki/Distance_education\" title=\"Distance education\">distance education</a> drove demand for <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a> and grew the company's gaming sales.<sup id=\"cite_ref-146\" class=\"reference\"><a href=\"#cite_note-146\">&#91;146&#93;</a></sup><sup id=\"cite_ref-147\" class=\"reference\"><a href=\"#cite_note-147\">&#91;147&#93;</a></sup><sup id=\"cite_ref-148\" class=\"reference\"><a href=\"#cite_note-148\">&#91;148&#93;</a></sup>\n</p><p>On June 24, 2021, Microsoft announced <a href=\"/wiki/Windows_11\" title=\"Windows 11\">Windows 11</a> during a Livestream. The announcement came with confusion after Microsoft announced Windows 10 would be the last version of the operating system; set to be released in the third quarter of 2021.<sup id=\"cite_ref-149\" class=\"reference\"><a href=\"#cite_note-149\">&#91;149&#93;</a></sup> It was released to the general public on October 5, 2021.<sup id=\"cite_ref-150\" class=\"reference\"><a href=\"#cite_note-150\">&#91;150&#93;</a></sup>\n</p><p>In September 2021, it was announced that the company had acquired Takelessons, an online platform that connects students and tutors in numerous subjects. The acquisition positioned Microsoft to grow its presence in the market of providing online education to large numbers of people.<sup id=\"cite_ref-151\" class=\"reference\"><a href=\"#cite_note-151\">&#91;151&#93;</a></sup> In the same month, Microsoft acquired Australia-based video editing software company <a href=\"/wiki/Clipchamp\" title=\"Clipchamp\">Clipchamp</a>.<sup id=\"cite_ref-152\" class=\"reference\"><a href=\"#cite_note-152\">&#91;152&#93;</a></sup>\n</p><p>In October 2021, Microsoft announced that it began rolling out end-to-end encryption (E2EE) support for Microsoft Teams calls in order to secure business communication while using video conferencing software. Users can ensure that their calls are encrypted and can utilize a security code that both parties on a call must verify on their respective ends.<sup id=\"cite_ref-153\" class=\"reference\"><a href=\"#cite_note-153\">&#91;153&#93;</a></sup> On October 7, Microsoft acquired Ally.io, a software service that measures companies' progress against <a href=\"/wiki/OKR\" class=\"mw-redirect\" title=\"OKR\">OKRs</a>. Microsoft plans to incorporate Ally.io into its Viva family of employee experience products.<sup id=\"cite_ref-154\" class=\"reference\"><a href=\"#cite_note-154\">&#91;154&#93;</a></sup>\n</p><p>On January 18, 2022, Microsoft announced the acquisition of American video game developer and <a href=\"/wiki/Holding_company\" title=\"Holding company\">holding company</a> <a href=\"/wiki/Activision_Blizzard\" title=\"Activision Blizzard\">Activision Blizzard</a> in an all-cash deal worth $68.7 billion.<sup id=\"cite_ref-:0_155-0\" class=\"reference\"><a href=\"#cite_note-:0-155\">&#91;155&#93;</a></sup> Activision Blizzard is best known for producing franchises, including but not limited to <i><a href=\"/wiki/Warcraft\" title=\"Warcraft\">Warcraft</a></i>, <i><a href=\"/wiki/Diablo_(series)\" title=\"Diablo (series)\">Diablo</a></i>, <i><a href=\"/wiki/Call_of_Duty\" title=\"Call of Duty\">Call of Duty</a></i>, <i><a href=\"/wiki/StarCraft\" title=\"StarCraft\">StarCraft</a></i>, <i><a href=\"/wiki/Candy_Crush_Saga\" title=\"Candy Crush Saga\">Candy Crush Saga</a></i>, <i><a href=\"/wiki/Crash_Bandicoot\" title=\"Crash Bandicoot\">Crash Bandicoot</a></i>, <i><a href=\"/wiki/Spyro\" title=\"Spyro\">Spyro</a></i>, <i><a href=\"/wiki/Tony_Hawk%27s\" title=\"Tony Hawk&#39;s\">Tony Hawk's</a></i>, <i><a href=\"/wiki/Guitar_Hero\" title=\"Guitar Hero\">Guitar Hero</a></i>, and <i><a href=\"/wiki/Overwatch\" title=\"Overwatch\">Overwatch</a></i>.<sup id=\"cite_ref-156\" class=\"reference\"><a href=\"#cite_note-156\">&#91;156&#93;</a></sup> Activision and Microsoft each released statements saying the acquisition was to benefit their businesses in the <a href=\"/wiki/Metaverse\" title=\"Metaverse\">metaverse</a>, many saw Microsoft's acquisition of video game studios as an attempt to compete against <a href=\"/wiki/Meta_Platforms\" title=\"Meta Platforms\">Meta Platforms</a>, with <i><a href=\"/wiki/TheStreet\" title=\"TheStreet\">TheStreet</a></i> referring to Microsoft wanting to become \"the <a href=\"/wiki/The_Walt_Disney_Company\" title=\"The Walt Disney Company\">Disney</a> of the metaverse\".<sup id=\"cite_ref-157\" class=\"reference\"><a href=\"#cite_note-157\">&#91;157&#93;</a></sup><sup id=\"cite_ref-158\" class=\"reference\"><a href=\"#cite_note-158\">&#91;158&#93;</a></sup> Microsoft also named <a href=\"/wiki/Phil_Spencer_(business_executive)\" title=\"Phil Spencer (business executive)\">Phil Spencer</a>, head of the Xbox brand since 2014, the inaugural CEO of the newly established <a href=\"/wiki/Microsoft_Gaming\" title=\"Microsoft Gaming\">Microsoft Gaming</a> division, which now houses the Xbox operations team and the three publishers in the company's portfolio (Xbox Game Studios, ZeniMax Media, Activision Blizzard). Microsoft has not released statements regarding Activision's recent legal controversies regarding employee abuse, but reports have alleged that Activision CEO <a href=\"/wiki/Bobby_Kotick\" title=\"Bobby Kotick\">Bobby Kotick</a>, a major target of the controversy, will leave the company after the acquisition is finalized.<sup id=\"cite_ref-159\" class=\"reference\"><a href=\"#cite_note-159\">&#91;159&#93;</a></sup> The deal was closed on October 13, 2023.<sup id=\"cite_ref-160\" class=\"reference\"><a href=\"#cite_note-160\">&#91;160&#93;</a></sup>\n</p><p>In December 2022, Microsoft announced a new 10-year deal with the London Stock Exchange for products including Microsoft Azure; Microsoft acquired ~4% of the LSE as part of the deal.<sup id=\"cite_ref-161\" class=\"reference\"><a href=\"#cite_note-161\">&#91;161&#93;</a></sup>\n</p><p>In January 2023, CEO Satya Nadella announced Microsoft would lay off some 10,000 employees.<sup id=\"cite_ref-162\" class=\"reference\"><a href=\"#cite_note-162\">&#91;162&#93;</a></sup> The announcement came a day after hosting a <a href=\"/wiki/Sting_(musician)\" title=\"Sting (musician)\">Sting</a> concert for 50 people, including Microsoft executives, in <a href=\"/wiki/Davos\" title=\"Davos\">Davos</a>, Switzerland.<sup id=\"cite_ref-163\" class=\"reference\"><a href=\"#cite_note-163\">&#91;163&#93;</a></sup>\n</p><p>On January 23, 2023, Microsoft announced a new multi-year, multi-billion dollar investment deal with <a href=\"/wiki/ChatGPT\" title=\"ChatGPT\">ChatGPT</a> developer <a href=\"/wiki/OpenAI\" title=\"OpenAI\">OpenAI</a>.<sup id=\"cite_ref-164\" class=\"reference\"><a href=\"#cite_note-164\">&#91;164&#93;</a></sup>\n</p><p>At a November 2023 developer conference, Microsoft announced two new custom-designed computing chips: The Maia chip, designed to run large language models, and Cobalt CPU, designed to power general cloud services on Azure.<sup id=\"cite_ref-165\" class=\"reference\"><a href=\"#cite_note-165\">&#91;165&#93;</a></sup><sup id=\"cite_ref-166\" class=\"reference\"><a href=\"#cite_note-166\">&#91;166&#93;</a></sup>\n</p><p>On November 20, 2023, Satya Nadella announced the former\n<a href=\"/wiki/OpenAI\" title=\"OpenAI\">OpenAI</a> CEO <a href=\"/wiki/Sam_Altman\" title=\"Sam Altman\">Sam Altman</a> and former president and Chairman of <a href=\"/wiki/Greg_Brockman\" title=\"Greg Brockman\">Greg Brockman</a> will be joining Microsoft to lead a new advanced AI research team.<sup id=\"cite_ref-167\" class=\"reference\"><a href=\"#cite_note-167\">&#91;167&#93;</a></sup><sup id=\"cite_ref-168\" class=\"reference\"><a href=\"#cite_note-168\">&#91;168&#93;</a></sup>\n</p><p>In January 2024, Microsoft became the most valued publicly traded company. Meanwhile, that month, the company announced a subscription offering of artificial intelligence for small businesses via Copilot Pro. <sup id=\"cite_ref-169\" class=\"reference\"><a href=\"#cite_note-169\">&#91;169&#93;</a></sup><sup id=\"cite_ref-170\" class=\"reference\"><a href=\"#cite_note-170\">&#91;170&#93;</a></sup>\n</p>\n<h2><span class=\"mw-headline\" id=\"Corporate_affairs\">Corporate affairs</span></h2>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1033289096\"><div role=\"note\" class=\"hatnote navigation-not-searchable\">See also: <a href=\"/wiki/Criticism_of_Microsoft\" title=\"Criticism of Microsoft\">Criticism of Microsoft</a>; <a href=\"/wiki/Internet_censorship_in_China\" title=\"Internet censorship in China\">Internet censorship in China</a>; and <a href=\"/wiki/Embrace,_extend,_and_extinguish\" title=\"Embrace, extend, and extinguish\">Embrace, extend, and extinguish</a></div>\n<h3><span class=\"mw-headline\" id=\"Board_of_directors\">Board of directors</span></h3>\n<p>The company is run by a <a href=\"/wiki/Board_of_directors\" title=\"Board of directors\">board of directors</a> made up of mostly company outsiders, as is customary for publicly traded companies. Members of the board of directors as of December 2023 are <a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a>, <a href=\"/wiki/Reid_Hoffman\" title=\"Reid Hoffman\">Reid Hoffman</a>, Hugh Johnston, Teri List, <a href=\"/wiki/Sandi_Peterson\" title=\"Sandi Peterson\">Sandi Peterson</a>, <a href=\"/wiki/Penny_Pritzker\" title=\"Penny Pritzker\">Penny Pritzker</a>, Carlos Rodriguez, <a href=\"/wiki/Charles_Scharf\" title=\"Charles Scharf\">Charles Scharf</a>, <a href=\"/wiki/John_W._Stanton\" title=\"John W. Stanton\">John W. Stanton</a>, <a href=\"/wiki/John_W._Thompson\" title=\"John W. Thompson\">John W. Thompson</a>, <a href=\"/wiki/Emma_Walmsley\" title=\"Emma Walmsley\">Emma Walmsley</a> and <a href=\"/wiki/Padmasree_Warrior\" title=\"Padmasree Warrior\">Padmasree Warrior</a>.<sup id=\"cite_ref-171\" class=\"reference\"><a href=\"#cite_note-171\">&#91;171&#93;</a></sup>\n</p><p>Board members are elected every year at the annual shareholders' meeting using a majority vote system. There are four committees within the board that oversee more specific matters. These committees include the Audit Committee, which handles accounting issues with the company including auditing and reporting; the Compensation Committee, which approves compensation for the CEO and other employees of the company; the Governance and Nominating Committee, which handles various corporate matters including the nomination of the board; and the Regulatory and Public Policy Committee, which includes legal/antitrust matters, along with privacy, trade, digital safety, artificial intelligence, and environmental sustainability.<sup id=\"cite_ref-172\" class=\"reference\"><a href=\"#cite_note-172\">&#91;172&#93;</a></sup>\n</p><p>On March 13, 2020, Gates announced that he is leaving the board of directors of Microsoft and <a href=\"/wiki/Berkshire_Hathaway\" title=\"Berkshire Hathaway\">Berkshire Hathaway</a> to focus more on his philanthropic efforts. According to Aaron Tilley of <i><a href=\"/wiki/The_Wall_Street_Journal\" title=\"The Wall Street Journal\">The Wall Street Journal</a></i> this is \"marking the biggest boardroom departure in the tech industry since the death of longtime rival and Apple Inc. co-founder <a href=\"/wiki/Steve_Jobs\" title=\"Steve Jobs\">Steve Jobs</a>.\"<sup id=\"cite_ref-173\" class=\"reference\"><a href=\"#cite_note-173\">&#91;173&#93;</a></sup>\n</p><p>On January 13, 2022, <i>The Wall Street Journal</i> reported that Microsoft's board of directors plans to hire an external <a href=\"/wiki/Law_firm\" title=\"Law firm\">law firm</a> to review its <a href=\"/wiki/Sexual_harassment\" title=\"Sexual harassment\">sexual harassment</a> and <a href=\"/wiki/Gender_discrimination\" class=\"mw-redirect\" title=\"Gender discrimination\">gender discrimination</a> policies, and to release a summary of how the company handled past allegations of misconduct against Bill Gates and other corporate executives.<sup id=\"cite_ref-174\" class=\"reference\"><a href=\"#cite_note-174\">&#91;174&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Chief_executives\">Chief executives</span></h3>\n<ol><li><a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a> (1975–2000)</li>\n<li><a href=\"/wiki/Steve_Ballmer\" title=\"Steve Ballmer\">Steve Ballmer</a> (2000–2014)</li>\n<li><a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a> (2014–present)</li></ol>\n<h3><span class=\"mw-headline\" id=\"Financial\">Financial</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Microsoft_5-Year_Stock_History.svg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/04/Microsoft_5-Year_Stock_History.svg/350px-Microsoft_5-Year_Stock_History.svg.png\" decoding=\"async\" width=\"350\" height=\"177\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/04/Microsoft_5-Year_Stock_History.svg/525px-Microsoft_5-Year_Stock_History.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/04/Microsoft_5-Year_Stock_History.svg/700px-Microsoft_5-Year_Stock_History.svg.png 2x\" data-file-width=\"534\" data-file-height=\"270\" /></a><figcaption>Five year history graph of <a href=\"/wiki/Nasdaq\" title=\"Nasdaq\">Nasdaq</a>:&#160;<a rel=\"nofollow\" class=\"external text\" href=\"https://www.nasdaq.com/market-activity/stocks/msft\">MSFT</a> stock on July 17, 2013<sup id=\"cite_ref-175\" class=\"reference\"><a href=\"#cite_note-175\">&#91;175&#93;</a></sup></figcaption></figure>\n<p>When Microsoft went public and launched its <a href=\"/wiki/Initial_public_offering\" title=\"Initial public offering\">initial public offering</a> (IPO) in 1986, the opening <a href=\"/wiki/Stock\" title=\"Stock\">stock</a> price was $21; after the <a href=\"/wiki/Trading_day\" title=\"Trading day\">trading day</a>, the price closed at $27.75. As of July 2010, with the company's nine <a href=\"/wiki/Stock_split\" title=\"Stock split\">stock splits</a>, any IPO <a href=\"/wiki/Share_(finance)\" title=\"Share (finance)\">shares</a> would be multiplied by 288; if one were to buy the IPO today, given the splits and other factors, it would cost about 9&#160;cents.<sup id=\"cite_ref-Allan_2001_14-8\" class=\"reference\"><a href=\"#cite_note-Allan_2001-14\">&#91;14&#93;</a></sup><sup class=\"reference nowrap\"><span title=\"Page / location: 235–236\">&#58;&#8202;235–236&#8202;</span></sup><sup id=\"cite_ref-176\" class=\"reference\"><a href=\"#cite_note-176\">&#91;176&#93;</a></sup><sup id=\"cite_ref-177\" class=\"reference\"><a href=\"#cite_note-177\">&#91;177&#93;</a></sup> The stock price peaked in 1999 at around $119 ($60.928, adjusting for splits).<sup id=\"cite_ref-stocksheet_178-0\" class=\"reference\"><a href=\"#cite_note-stocksheet-178\">&#91;178&#93;</a></sup> The company began to offer a <a href=\"/wiki/Dividend\" title=\"Dividend\">dividend</a> on January 16, 2003, starting at eight cents per share for the fiscal year followed by a dividend of sixteen cents per share the subsequent year, switching from yearly to quarterly dividends in 2005 with eight cents a share per quarter and a <a href=\"/wiki/Special_dividend\" title=\"Special dividend\">special one-time payout</a> of three dollars per share for the second quarter of the fiscal year.<sup id=\"cite_ref-stocksheet_178-1\" class=\"reference\"><a href=\"#cite_note-stocksheet-178\">&#91;178&#93;</a></sup><sup id=\"cite_ref-dividendfaq_179-0\" class=\"reference\"><a href=\"#cite_note-dividendfaq-179\">&#91;179&#93;</a></sup> Though the company had subsequent increases in dividend payouts, the price of Microsoft's stock remained steady for years.<sup id=\"cite_ref-dividendfaq_179-1\" class=\"reference\"><a href=\"#cite_note-dividendfaq-179\">&#91;179&#93;</a></sup><sup id=\"cite_ref-180\" class=\"reference\"><a href=\"#cite_note-180\">&#91;180&#93;</a></sup>\n</p><p><a href=\"/wiki/Standard_%26_Poor%27s\" class=\"mw-redirect\" title=\"Standard &amp; Poor&#39;s\">Standard &amp; Poor's</a> and <a href=\"/wiki/Moody%27s_Investors_Service\" class=\"mw-redirect\" title=\"Moody&#39;s Investors Service\">Moody's Investors Service</a> have both given a AAA rating to Microsoft, whose assets were valued at $41&#160;billion as compared to only $8.5&#160;billion in unsecured debt. Consequently, in February 2011 Microsoft released a corporate bond amounting to $2.25&#160;billion with relatively low borrowing rates compared to <a href=\"/wiki/Government_bond\" title=\"Government bond\">government bonds</a>.<sup id=\"cite_ref-181\" class=\"reference\"><a href=\"#cite_note-181\">&#91;181&#93;</a></sup> For the first time in 20 years <a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple Inc.</a> surpassed Microsoft in Q1 2011 quarterly profits and revenues due to a slowdown in PC sales and continuing huge losses in Microsoft's Online Services Division (which contains its search engine <a href=\"/wiki/Bing_(search_engine)\" class=\"mw-redirect\" title=\"Bing (search engine)\">Bing</a>). Microsoft profits were $5.2&#160;billion, while Apple Inc. profits were $6&#160;billion, on revenues of $14.5&#160;billion and $24.7&#160;billion respectively.<sup id=\"cite_ref-182\" class=\"reference\"><a href=\"#cite_note-182\">&#91;182&#93;</a></sup> Microsoft's Online Services Division has been continuously loss-making since 2006 and in Q1 2011 it lost $726&#160;million. This follows a loss of $2.5&#160;billion for the year 2010.<sup id=\"cite_ref-183\" class=\"reference\"><a href=\"#cite_note-183\">&#91;183&#93;</a></sup>\n</p>\n<table class=\"wikitable floatright\">\n<caption>Sales by region (2023)<sup id=\"cite_ref-:1_184-0\" class=\"reference\"><a href=\"#cite_note-:1-184\">&#91;184&#93;</a></sup>\n</caption>\n<tbody><tr>\n<th>Region\n</th>\n<th>Sales in billion $\n</th>\n<th>share\n</th></tr>\n<tr>\n<td>United States\n</td>\n<td>106.7\n</td>\n<td>50.4%\n</td></tr>\n<tr>\n<td>Other countries\n</td>\n<td>105.2\n</td>\n<td>49.6%\n</td></tr></tbody></table>\n<p>On July 20, 2012, Microsoft posted its first quarterly loss ever, despite earning record revenues for the quarter and fiscal year, with a net loss of $492&#160;million due to a <a href=\"/wiki/Write-off#Write-down\" title=\"Write-off\">writedown</a> related to the advertising company <a href=\"/wiki/AQuantive\" title=\"AQuantive\">aQuantive</a>, which had been acquired for $6.2&#160;billion back in 2007.<sup id=\"cite_ref-185\" class=\"reference\"><a href=\"#cite_note-185\">&#91;185&#93;</a></sup> As of January 2014, Microsoft's market capitalization stood at $314B,<sup id=\"cite_ref-186\" class=\"reference\"><a href=\"#cite_note-186\">&#91;186&#93;</a></sup> making it the 8th largest company in the world by market capitalization.<sup id=\"cite_ref-187\" class=\"reference\"><a href=\"#cite_note-187\">&#91;187&#93;</a></sup> On November 14, 2014, Microsoft overtook <a href=\"/wiki/ExxonMobil\" title=\"ExxonMobil\">ExxonMobil</a> to become the second most-valuable company by market capitalization, behind only <a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple Inc.</a> Its total market value was over $410B—with the stock price hitting $50.04 a share, the highest since early 2000.<sup id=\"cite_ref-188\" class=\"reference\"><a href=\"#cite_note-188\">&#91;188&#93;</a></sup> In 2015, <a href=\"/wiki/Reuters\" title=\"Reuters\">Reuters</a> reported that Microsoft Corp had earnings abroad of $76.4&#160;billion which were untaxed by the <a href=\"/wiki/Internal_Revenue_Service\" title=\"Internal Revenue Service\">Internal Revenue Service</a>. Under U.S. law, corporations do not pay income tax on overseas profits until the profits are brought into the United States.<sup id=\"cite_ref-189\" class=\"reference\"><a href=\"#cite_note-189\">&#91;189&#93;</a></sup>\n</p>\n<table class=\"wikitable float-left\" style=\"text-align: right;\">\n<tbody><tr>\n<th>Year\n</th>\n<th>Revenue<br />in million US$<sup id=\"cite_ref-microsoft.com_190-0\" class=\"reference\"><a href=\"#cite_note-microsoft.com-190\">&#91;190&#93;</a></sup>\n</th>\n<th>Net income<br />in million US$<sup id=\"cite_ref-microsoft.com_190-1\" class=\"reference\"><a href=\"#cite_note-microsoft.com-190\">&#91;190&#93;</a></sup>\n</th>\n<th>Total Assets<br />in million US$<sup id=\"cite_ref-microsoft.com_190-2\" class=\"reference\"><a href=\"#cite_note-microsoft.com-190\">&#91;190&#93;</a></sup>\n</th>\n<th>Employees<sup id=\"cite_ref-:2_191-0\" class=\"reference\"><a href=\"#cite_note-:2-191\">&#91;191&#93;</a></sup>\n</th></tr>\n<tr>\n<td>2005\n</td>\n<td>39,788\n</td>\n<td>12,254\n</td>\n<td>70,815\n</td>\n<td>61,000\n</td></tr>\n<tr>\n<td>2006\n</td>\n<td>44,282\n</td>\n<td>12,599\n</td>\n<td>69,597\n</td>\n<td>71,000\n</td></tr>\n<tr>\n<td>2007\n</td>\n<td>51,122\n</td>\n<td>14,065\n</td>\n<td>63,171\n</td>\n<td>79,000\n</td></tr>\n<tr>\n<td>2008\n</td>\n<td>60,420\n</td>\n<td>17,681\n</td>\n<td>72,793\n</td>\n<td>91,000\n</td></tr>\n<tr>\n<td>2009\n</td>\n<td>58,437\n</td>\n<td>14,569\n</td>\n<td>77,888\n</td>\n<td>93,000\n</td></tr>\n<tr>\n<td>2010\n</td>\n<td>62,484\n</td>\n<td>18,760\n</td>\n<td>86,113\n</td>\n<td>89,000\n</td></tr>\n<tr>\n<td>2011\n</td>\n<td>69,943\n</td>\n<td>23,150\n</td>\n<td>108,704\n</td>\n<td>90,000\n</td></tr>\n<tr>\n<td>2012\n</td>\n<td>73,723\n</td>\n<td>16,978\n</td>\n<td>121,271\n</td>\n<td>94,000\n</td></tr>\n<tr>\n<td>2013\n</td>\n<td>77,849\n</td>\n<td>21,863\n</td>\n<td>142,431\n</td>\n<td>99,000\n</td></tr>\n<tr>\n<td>2014\n</td>\n<td>86,833\n</td>\n<td>22,074\n</td>\n<td>172,384\n</td>\n<td>128,000\n</td></tr>\n<tr>\n<td>2015\n</td>\n<td>93,580\n</td>\n<td>12,193\n</td>\n<td>174,472\n</td>\n<td>118,000\n</td></tr>\n<tr>\n<td>2016\n</td>\n<td>91,154\n</td>\n<td>20,539\n</td>\n<td>193,468\n</td>\n<td>114,000\n</td></tr>\n<tr>\n<td>2017\n</td>\n<td>96,571\n</td>\n<td>25,489\n</td>\n<td>250,312\n</td>\n<td>124,000\n</td></tr>\n<tr>\n<td>2018\n</td>\n<td>110,360\n</td>\n<td>16,571\n</td>\n<td>258,848\n</td>\n<td>131,000\n</td></tr>\n<tr>\n<td>2019\n</td>\n<td>125,843\n</td>\n<td>39,240\n</td>\n<td>286,556\n</td>\n<td>144,106\n</td></tr>\n<tr>\n<td>2020\n</td>\n<td>143,015\n</td>\n<td>44,281\n</td>\n<td>301,311\n</td>\n<td>163,000\n</td></tr>\n<tr>\n<td>2021\n</td>\n<td>168,088\n</td>\n<td>61,271\n</td>\n<td>333,779\n</td>\n<td>181,000\n</td></tr>\n<tr>\n<td>2022\n</td>\n<td>198,270\n</td>\n<td>72,738\n</td>\n<td>364,840\n</td>\n<td>221,000\n</td></tr>\n<tr>\n<td>2023\n</td>\n<td>211,915\n</td>\n<td>73,307\n</td>\n<td>411,976\n</td>\n<td>238,000\n</td></tr></tbody></table>\n<p>In November 2018, the company won a $480&#160;million military contract with the U.S. government to bring <a href=\"/wiki/Augmented_reality\" title=\"Augmented reality\">augmented reality</a> (AR) headset technology into the weapon repertoires of American soldiers. The two-year contract may result in follow-on orders of more than 100,000 headsets, according to documentation describing the bidding process. One of the contract's tag lines for the augmented reality technology seems to be its ability to enable \"25 bloodless battles before the 1st battle,\" suggesting that actual combat training is going to be an essential aspect of the augmented reality headset capabilities.<sup id=\"cite_ref-192\" class=\"reference\"><a href=\"#cite_note-192\">&#91;192&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Subsidiaries\">Subsidiaries</span></h3>\n<p>Microsoft is an international business. As such, it needs subsidiaries present in whatever national markets it chooses to harvest. An example is Microsoft Canada, which it established in 1985.<sup id=\"cite_ref-mcan_193-0\" class=\"reference\"><a href=\"#cite_note-mcan-193\">&#91;193&#93;</a></sup> Other countries have similar installations, to funnel profits back up to Redmond and to distribute the dividends to the holders of MSFT stock.\n</p>\n<h3><span class=\"mw-headline\" id=\"Ownership\">Ownership</span></h3>\n<p>The 10 largest shareholder of Microsoft in early 2024 were:<sup id=\"cite_ref-:1_184-1\" class=\"reference\"><a href=\"#cite_note-:1-184\">&#91;184&#93;</a></sup>\n</p>\n<table class=\"wikitable sortable\">\n<tbody><tr>\n<th>Shareholder name\n</th>\n<th>Percentage\n</th></tr>\n<tr>\n<td><a href=\"/wiki/The_Vanguard_Group\" title=\"The Vanguard Group\">The Vanguard Group</a>\n</td>\n<td>8.9%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/BlackRock\" title=\"BlackRock\">BlackRock</a>\n</td>\n<td>5.6%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/State_Street_Corporation\" title=\"State Street Corporation\">State Street Corporation</a>\n</td>\n<td>4.0%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/Fidelity_Investments\" title=\"Fidelity Investments\">Fidelity Investments</a>\n</td>\n<td>2.9%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/Geode_Capital_Management\" title=\"Geode Capital Management\">Geode Capital Management</a>\n</td>\n<td>2.1%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/T._Rowe_Price\" title=\"T. Rowe Price\">T. Rowe Price International</a>\n</td>\n<td>1.9%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/Eaton_Vance\" title=\"Eaton Vance\">Eaton Vance</a>\n</td>\n<td>1.7%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/JP_Morgan\" class=\"mw-redirect\" title=\"JP Morgan\">JP Morgan Investment Management</a>\n</td>\n<td>1.6%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a>\n</td>\n<td>1.4%\n</td></tr>\n<tr>\n<td><a href=\"/wiki/BlackRock\" title=\"BlackRock\">BlackRock Life</a>\n</td>\n<td>1.4%\n</td></tr>\n<tr>\n<td>Others\n</td>\n<td>68.5%\n</td></tr></tbody></table>\n<h3><span class=\"mw-headline\" id=\"Marketing\">Marketing</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Windows_8_Launch_Event_in_Akihabara,_Tokyo.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg/220px-Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg\" decoding=\"async\" width=\"220\" height=\"165\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg/330px-Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg/440px-Windows_8_Launch_Event_in_Akihabara%2C_Tokyo.jpg 2x\" data-file-width=\"2160\" data-file-height=\"1620\" /></a><figcaption><a href=\"/wiki/Windows_8\" title=\"Windows 8\">Windows 8</a> Launch Event in <a href=\"/wiki/Akihabara\" title=\"Akihabara\">Akihabara</a>, Tokyo on October 25, 2012</figcaption></figure>\n<p>In 2004, Microsoft commissioned research firms to do independent studies comparing the <a href=\"/wiki/Total_cost_of_ownership\" title=\"Total cost of ownership\">total cost of ownership</a> (TCO) of <a href=\"/wiki/Windows_Server_2003\" title=\"Windows Server 2003\">Windows Server 2003</a> to <a href=\"/wiki/Linux\" title=\"Linux\">Linux</a>; the firms concluded that companies found Windows easier to administrate than Linux, thus those using Windows would administrate faster resulting in lower costs for their company (i.e. lower TCO).<sup id=\"cite_ref-194\" class=\"reference\"><a href=\"#cite_note-194\">&#91;194&#93;</a></sup> This spurred a wave of related studies; a study by the <a href=\"/wiki/Yankee_Group\" title=\"Yankee Group\">Yankee Group</a> concluded that upgrading from one version of Windows Server to another costs a fraction of the <a href=\"/wiki/Switching_barriers\" title=\"Switching barriers\">switching costs</a> from Windows Server to Linux, although companies surveyed noted the increased security and reliability of Linux servers and concern about being locked into using Microsoft products.<sup id=\"cite_ref-195\" class=\"reference\"><a href=\"#cite_note-195\">&#91;195&#93;</a></sup> Another study, released by the <a href=\"/wiki/Open_Source_Development_Labs\" title=\"Open Source Development Labs\">Open Source Development Labs</a>, claimed that the Microsoft studies were \"simply outdated and one-sided\" and their survey concluded that the TCO of Linux was lower due to Linux administrators managing more servers on average and other reasons.<sup id=\"cite_ref-196\" class=\"reference\"><a href=\"#cite_note-196\">&#91;196&#93;</a></sup>\n</p><p>As part of the \"Get the Facts\" campaign, Microsoft highlighted the <a href=\"/wiki/.NET_Framework\" title=\".NET Framework\">.NET Framework</a> trading platform that it had developed in partnership with <a href=\"/wiki/Accenture\" title=\"Accenture\">Accenture</a> for the <a href=\"/wiki/London_Stock_Exchange\" title=\"London Stock Exchange\">London Stock Exchange</a>, claiming that it provided \"<a href=\"/wiki/High_availability\" title=\"High availability\">five nines</a>\" reliability. After suffering extended downtime and unreliability<sup id=\"cite_ref-197\" class=\"reference\"><a href=\"#cite_note-197\">&#91;197&#93;</a></sup><sup id=\"cite_ref-198\" class=\"reference\"><a href=\"#cite_note-198\">&#91;198&#93;</a></sup> the London Stock Exchange announced in 2009 that it was planning to drop its Microsoft solution and switch to a Linux-based one in 2010.<sup id=\"cite_ref-199\" class=\"reference\"><a href=\"#cite_note-199\">&#91;199&#93;</a></sup><sup id=\"cite_ref-200\" class=\"reference\"><a href=\"#cite_note-200\">&#91;200&#93;</a></sup>\n</p><p>In 2012, Microsoft hired a political pollster named Mark Penn, whom <i>The New York Times</i> called \"famous for bulldozing\" his political opponents<sup id=\"cite_ref-201\" class=\"reference\"><a href=\"#cite_note-201\">&#91;201&#93;</a></sup> as Executive Vice-president, Advertising and Strategy. Penn created a series of negative advertisements targeting one of Microsoft's chief competitors, <a href=\"/wiki/Google\" title=\"Google\">Google</a>. The advertisements, called \"<a href=\"/wiki/Scroogled\" title=\"Scroogled\">Scroogled</a>,\" attempt to make the case that Google is \"screwing\" consumers with search results rigged to favor Google's paid advertisers, that <a href=\"/wiki/Gmail\" title=\"Gmail\">Gmail</a> violates the privacy of its users to place ad results related to the content of their emails and shopping results, which favor Google products. Tech publications like TechCrunch have been highly critical of the advertising campaign,<sup id=\"cite_ref-202\" class=\"reference\"><a href=\"#cite_note-202\">&#91;202&#93;</a></sup> while Google employees have embraced it.<sup id=\"cite_ref-203\" class=\"reference\"><a href=\"#cite_note-203\">&#91;203&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Layoffs\">Layoffs</span></h3>\n<p>In July 2014, Microsoft announced plans to lay off 18,000 employees. Microsoft employed 127,104 people as of June 5, 2014, making this about a 14 percent reduction of its workforce as the biggest Microsoft layoff ever. This included 12,500 professional and factory personnel. Previously, Microsoft had eliminated 5,800 jobs in 2009 in line with the <a href=\"/wiki/Great_Recession\" title=\"Great Recession\">Great Recession</a> of 2008–2017.<sup id=\"cite_ref-204\" class=\"reference\"><a href=\"#cite_note-204\">&#91;204&#93;</a></sup><sup id=\"cite_ref-205\" class=\"reference\"><a href=\"#cite_note-205\">&#91;205&#93;</a></sup> In September 2014, Microsoft laid off 2,100 people, including 747 people in the Seattle–Redmond area, where the company is headquartered. The firings came as a second wave of the layoffs that were previously announced. This brought the total number to over 15,000 out of the 18,000 expected cuts.<sup id=\"cite_ref-206\" class=\"reference\"><a href=\"#cite_note-206\">&#91;206&#93;</a></sup> In October 2014, Microsoft revealed that it was almost done with eliminating 18,000 employees, which was its largest-ever layoff sweep.<sup id=\"cite_ref-207\" class=\"reference\"><a href=\"#cite_note-207\">&#91;207&#93;</a></sup> In July 2015, Microsoft announced another 7,800 job cuts in the next several months.<sup id=\"cite_ref-208\" class=\"reference\"><a href=\"#cite_note-208\">&#91;208&#93;</a></sup> In May 2016, Microsoft announced another 1,850 job cuts mostly in its Nokia mobile phone division. As a result, the company will record an impairment and restructuring charge of approximately $950&#160;million, of which approximately $200&#160;million will relate to severance payments.<sup id=\"cite_ref-209\" class=\"reference\"><a href=\"#cite_note-209\">&#91;209&#93;</a></sup>\n</p><p>Microsoft laid off 1,900 employees in its gaming division in January 2024. The layoffs primarily affected Activision Blizzard employees, but some Xbox and ZeniMax employees were also affected.<sup id=\"cite_ref-210\" class=\"reference\"><a href=\"#cite_note-210\">&#91;210&#93;</a></sup> Blizzard president Mike Ybarra and Blizzard's chief design officer Allen Adham also resigned.<sup id=\"cite_ref-211\" class=\"reference\"><a href=\"#cite_note-211\">&#91;211&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"United_States_government\">United States government</span></h3><p>\nMicrosoft provides information about reported bugs in their software to intelligence agencies of the United States government, prior to the public release of the fix. A Microsoft spokesperson has stated that the corporation runs several programs that facilitate the sharing of such information with the U.S. government.<sup id=\"cite_ref-212\" class=\"reference\"><a href=\"#cite_note-212\">&#91;212&#93;</a></sup> Following media reports about <a href=\"/wiki/PRISM_(surveillance_program)\" class=\"mw-redirect\" title=\"PRISM (surveillance program)\">PRISM</a>, NSA's massive electronic <a href=\"/wiki/Mass_surveillance\" title=\"Mass surveillance\">surveillance program</a>, in May 2013, several technology companies were identified as participants, including Microsoft.<sup id=\"cite_ref-213\" class=\"reference\"><a href=\"#cite_note-213\">&#91;213&#93;</a></sup> According to leaks of said program, Microsoft joined the PRISM program in 2007.<sup id=\"cite_ref-214\" class=\"reference\"><a href=\"#cite_note-214\">&#91;214&#93;</a></sup> However, in June 2013, an official statement from Microsoft flatly denied their participation in the program: <style data-mw-deduplicate=\"TemplateStyles:r1211633275\">.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequote .templatequotecite{line-height:1.5em;text-align:left;padding-left:1.6em;margin-top:0}</style></p><blockquote class=\"templatequote\" style=\"font-size:100%\"><p>\"We provide customer data only when we receive a legally binding order or subpoena to do so, and never on a voluntary basis. In addition, we only ever comply with orders for requests about specific accounts or identifiers. If the government has a broader voluntary national security program to gather customer data, we don't participate in it.\"<sup id=\"cite_ref-215\" class=\"reference\"><a href=\"#cite_note-215\">&#91;215&#93;</a></sup></p></blockquote>\n<p>During the first six months of 2013, Microsoft received requests that affected between 15,000 and 15,999 accounts.<sup id=\"cite_ref-216\" class=\"reference\"><a href=\"#cite_note-216\">&#91;216&#93;</a></sup> In December 2013, the company made a statement to further emphasize the fact that they take their customers' privacy and <a href=\"/wiki/Information_privacy\" title=\"Information privacy\">data protection</a> very seriously, even saying that \"government snooping potentially now constitutes an '<a href=\"/wiki/Advanced_persistent_threat\" title=\"Advanced persistent threat\">advanced persistent threat</a>,' alongside sophisticated malware and cyber attacks\".<sup id=\"cite_ref-217\" class=\"reference\"><a href=\"#cite_note-217\">&#91;217&#93;</a></sup> The statement also marked the beginning of three-part program to enhance Microsoft's encryption and transparency efforts. On July 1, 2014, as part of this program, they opened the first (of many) Microsoft Transparency Center, which provides \"participating governments with the ability to review <a href=\"/wiki/Source_code\" title=\"Source code\">source code</a> for our key products, assure themselves of their software integrity, and confirm there are no \"<a href=\"/wiki/Backdoor_(computing)\" title=\"Backdoor (computing)\">back doors</a>.\"<sup id=\"cite_ref-218\" class=\"reference\"><a href=\"#cite_note-218\">&#91;218&#93;</a></sup> Microsoft has also argued that the <a href=\"/wiki/United_States_Congress\" title=\"United States Congress\">United States Congress</a> should enact strong privacy regulations to protect consumer data.<sup id=\"cite_ref-219\" class=\"reference\"><a href=\"#cite_note-219\">&#91;219&#93;</a></sup>\n</p><p>In April 2016, the company <a href=\"/wiki/Microsoft_v._United_States_(2016)\" title=\"Microsoft v. United States (2016)\">sued the U.S. government</a>, argued that secrecy orders were preventing the company from disclosing warrants to customers in violation of the company's and customers' rights. Microsoft argued that it was unconstitutional for the government to indefinitely ban Microsoft from informing its users that the government was requesting their emails and other documents and that the <a href=\"/wiki/Fourth_Amendment_to_the_United_States_Constitution\" title=\"Fourth Amendment to the United States Constitution\">Fourth Amendment</a> made it so people or businesses had the right to know if the government searches or seizes their property. On October 23, 2017, Microsoft said it would drop the lawsuit as a result of a policy change by the <a href=\"/wiki/United_States_Department_of_Justice\" title=\"United States Department of Justice\">United States Department of Justice</a> (DoJ). The DoJ had \"changed data request rules on alerting the Internet users about agencies accessing their information.\"\n</p>\n<h3><span class=\"mw-headline\" id=\"Security_challenges\">Security challenges</span></h3>\n<p>On a Friday afternoon in January 2024, Microsoft disclosed that a Russian state-sponsored group hacked into its corporate systems.  The group, accessed \"a very small percentage\" of Microsoft corporate email accounts, which also included members of its senior leadership team and employees in its cybersecurity and legal teams.<sup id=\"cite_ref-220\" class=\"reference\"><a href=\"#cite_note-220\">&#91;220&#93;</a></sup> Microsoft noted in a blog post that the attack might have been prevented if the accounts in question had enabled <a href=\"/wiki/Multi-factor_authentication\" title=\"Multi-factor authentication\">multi-factor authentication</a>, a defensive measure which is widely recommended in the industry, including by Microsoft itself.<sup id=\"cite_ref-221\" class=\"reference\"><a href=\"#cite_note-221\">&#91;221&#93;</a></sup>\n</p>\n<h2><span class=\"mw-headline\" id=\"Corporate_identity\">Corporate identity</span></h2>\n<h3><span class=\"mw-headline\" id=\"Corporate_culture\">Corporate culture</span></h3>\n<p>Technical references for developers and articles for various Microsoft magazines such as <i>Microsoft Systems Journal</i> (MSJ) are available through the <a href=\"/wiki/Microsoft_Developer_Network\" title=\"Microsoft Developer Network\">Microsoft Developer Network</a> (MSDN). MSDN also offers subscriptions for companies and individuals, and the more expensive subscriptions usually offer access to pre-release beta versions of Microsoft software.<sup id=\"cite_ref-222\" class=\"reference\"><a href=\"#cite_note-222\">&#91;222&#93;</a></sup><sup id=\"cite_ref-223\" class=\"reference\"><a href=\"#cite_note-223\">&#91;223&#93;</a></sup> In April 2004, Microsoft launched a community site for developers and users, titled <a href=\"/wiki/Channel_9_(Microsoft)\" title=\"Channel 9 (Microsoft)\">Channel 9</a>, that provides a <a href=\"/wiki/Wiki\" title=\"Wiki\">wiki</a> and an <a href=\"/wiki/Internet_forum\" title=\"Internet forum\">Internet forum</a>.<sup id=\"cite_ref-224\" class=\"reference\"><a href=\"#cite_note-224\">&#91;224&#93;</a></sup> Another community site that provides daily <a href=\"/wiki/Podcast#Video_podcasts\" title=\"Podcast\">videocasts</a> and other services, On10.net, launched on March 3, 2006.<sup id=\"cite_ref-225\" class=\"reference\"><a href=\"#cite_note-225\">&#91;225&#93;</a></sup> Free technical support is traditionally provided through online <a href=\"/wiki/Usenet\" title=\"Usenet\">Usenet</a> newsgroups, and <a href=\"/wiki/CompuServe\" title=\"CompuServe\">CompuServe</a> in the past, monitored by Microsoft employees; there can be several newsgroups for a single product. Helpful people can be elected by peers or Microsoft employees for <a href=\"/wiki/Microsoft_Most_Valuable_Professional\" title=\"Microsoft Most Valuable Professional\">Microsoft Most Valuable Professional</a> (MVP) status, which entitles them to a sort of special social status and possibilities for awards and other benefits.<sup id=\"cite_ref-226\" class=\"reference\"><a href=\"#cite_note-226\">&#91;226&#93;</a></sup>\n</p><p>Noted for its internal <a href=\"/wiki/Lexicon\" title=\"Lexicon\">lexicon</a>, the expression \"<a href=\"/wiki/Eating_your_own_dog_food\" title=\"Eating your own dog food\">eating your own dog food</a>\" is used to describe the policy of using pre-release and beta versions of products inside Microsoft to test them in \"real-world\" situations.<sup id=\"cite_ref-227\" class=\"reference\"><a href=\"#cite_note-227\">&#91;227&#93;</a></sup> This is usually shortened to just \"dog food\" and is used as a noun, verb, and adjective. Another bit of <a href=\"/wiki/Jargon\" title=\"Jargon\">jargon</a>, <a href=\"/wiki/FYIFV\" title=\"FYIFV\">FYIFV</a> or FYIV (\"<a href=\"/wiki/Fuck\" title=\"Fuck\">Fuck</a> You, I'm [Fully] Vested\"), is used by an employee to indicate they are <a href=\"/wiki/Financial_independence\" title=\"Financial independence\">financially independent</a> and can avoid work anytime they wish.<sup id=\"cite_ref-228\" class=\"reference\"><a href=\"#cite_note-228\">&#91;228&#93;</a></sup>\n</p><p>Microsoft is an outspoken opponent of the cap on <a href=\"/wiki/H-1B_visa\" title=\"H-1B visa\">H-1B visas</a>, which allows companies in the U.S. to employ certain foreign workers. Bill Gates claims the cap on H1B visas makes it difficult to hire employees for the company, stating \"I'd certainly get rid of the H1B cap\" in 2005.<sup id=\"cite_ref-229\" class=\"reference\"><a href=\"#cite_note-229\">&#91;229&#93;</a></sup> Critics of H1B visas argue that relaxing the limits would result in increased unemployment for U.S. citizens due to H1B workers working for lower salaries.<sup id=\"cite_ref-230\" class=\"reference\"><a href=\"#cite_note-230\">&#91;230&#93;</a></sup>\n</p><p>The <a href=\"/wiki/Human_Rights_Campaign\" title=\"Human Rights Campaign\">Human Rights Campaign</a> Corporate Equality Index, a report of how progressive the organization deems company policies towards <a href=\"/wiki/LGBT\" title=\"LGBT\">LGBT</a> employees, rated Microsoft as 87% from 2002 to 2004 and as 100% from 2005 to 2010 after they allowed gender expression.<sup id=\"cite_ref-231\" class=\"reference\"><a href=\"#cite_note-231\">&#91;231&#93;</a></sup>\n</p><p>In August 2018, Microsoft implemented a policy for all companies providing subcontractors to require 12 weeks of paid parental leave to each employee. This expands on the former requirement from 2015 requiring 15 days of paid vacation and sick leave each year.<sup id=\"cite_ref-232\" class=\"reference\"><a href=\"#cite_note-232\">&#91;232&#93;</a></sup> In 2015, Microsoft established its own parental leave policy to allow 12 weeks off for parental leave with an additional 8 weeks for the parent who gave birth.<sup id=\"cite_ref-233\" class=\"reference\"><a href=\"#cite_note-233\">&#91;233&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Environment\">Environment</span></h3>\n<p>In 2011, <a href=\"/wiki/Greenpeace\" title=\"Greenpeace\">Greenpeace</a> released a report rating the top ten big brands in <a href=\"/wiki/Cloud_computing\" title=\"Cloud computing\">cloud computing</a> on their sources of electricity for their <a href=\"/wiki/Data_center\" title=\"Data center\">data centers</a>. At the time, data centers consumed up to 2% of all global electricity, and this amount was projected to increase. <a href=\"/wiki/Phil_Radford\" title=\"Phil Radford\">Phil Radford</a> of Greenpeace said, \"We are concerned that this new explosion in electricity use could lock us into old, polluting energy sources instead of the clean energy available today,\"<sup id=\"cite_ref-234\" class=\"reference\"><a href=\"#cite_note-234\">&#91;234&#93;</a></sup> and called on \"Amazon, Microsoft and other leaders of the information-technology industry must embrace clean energy to power their cloud-based data centers.\"<sup id=\"cite_ref-235\" class=\"reference\"><a href=\"#cite_note-235\">&#91;235&#93;</a></sup> In 2013, Microsoft agreed to buy power generated by a Texas wind project to power one of its data centers.<sup id=\"cite_ref-236\" class=\"reference\"><a href=\"#cite_note-236\">&#91;236&#93;</a></sup>\n</p><p>Microsoft is ranked on the 17th place in <a href=\"/wiki/Greenpeace\" title=\"Greenpeace\">Greenpeace</a>'s <i>Guide to Greener Electronics</i> (16th Edition) that ranks 18 electronics manufacturers according to their policies on toxic chemicals, recycling, and climate change.<sup id=\"cite_ref-237\" class=\"reference\"><a href=\"#cite_note-237\">&#91;237&#93;</a></sup> Microsoft's timeline for phasing out <a href=\"/wiki/Brominated_flame_retardant\" title=\"Brominated flame retardant\">brominated flame retardant</a> (BFRs) and <a href=\"/wiki/Phthalate\" class=\"mw-redirect\" title=\"Phthalate\">phthalates</a> in all products was 2012 but its commitment to phasing out <a href=\"/wiki/Polyvinyl_chloride\" title=\"Polyvinyl chloride\">PVC</a> is not clear. As of January&#160;2011,<sup class=\"plainlinks noexcerpt noprint asof-tag update\" style=\"display:none;\"><a class=\"external text\" href=\"https://en.wikipedia.org/w/index.php?title=Microsoft&amp;action=edit\">&#91;update&#93;</a></sup> it has no products that are completely free from PVC and BFRs.<sup id=\"cite_ref-238\" class=\"reference\"><a href=\"#cite_note-238\">&#91;238&#93;</a></sup><sup class=\"noprint Inline-Template\" style=\"white-space:nowrap;\">&#91;<i><a href=\"/wiki/Wikipedia:Manual_of_Style/Dates_and_numbers#Chronological_items\" title=\"Wikipedia:Manual of Style/Dates and numbers\"><span title=\"The date of the event predicted near this tag has passed. (March 2024)\">needs update</span></a></i>&#93;</sup>\n</p><p>Microsoft's main U.S. campus received a silver certification from the <a href=\"/wiki/Leadership_in_Energy_and_Environmental_Design\" class=\"mw-redirect\" title=\"Leadership in Energy and Environmental Design\">Leadership in Energy and Environmental Design</a> (LEED) program in 2008, and it installed over 2,000 <a href=\"/wiki/Solar_panel\" title=\"Solar panel\">solar panels</a> on top of its buildings at its <a href=\"/wiki/Silicon_Valley\" title=\"Silicon Valley\">Silicon Valley</a> campus, generating approximately 15 percent of the total energy needed by the facilities in April 2005.<sup id=\"cite_ref-news1_239-0\" class=\"reference\"><a href=\"#cite_note-news1-239\">&#91;239&#93;</a></sup> Microsoft makes use of alternative forms of transit. It created one of the world's largest private bus systems, the \"Connector,\" to transport people from outside the company; for on-campus transportation, the \"Shuttle Connect\" uses a large fleet of hybrid cars to save fuel. The \"Connector\" does not compete with the public bus system and works with it to provide a cohesive transportation network not just for its employees but also for the public.<sup id=\"cite_ref-240\" class=\"reference\"><a href=\"#cite_note-240\">&#91;240&#93;</a></sup>\n</p><p>Microsoft also subsidizes regional <a href=\"/wiki/Public_transport\" title=\"Public transport\">public transport</a>, provided by <a href=\"/wiki/Sound_Transit\" title=\"Sound Transit\">Sound Transit</a> and <a href=\"/wiki/King_County_Metro\" title=\"King County Metro\">King County Metro</a>, as an incentive.<sup id=\"cite_ref-news1_239-1\" class=\"reference\"><a href=\"#cite_note-news1-239\">&#91;239&#93;</a></sup><sup id=\"cite_ref-241\" class=\"reference\"><a href=\"#cite_note-241\">&#91;241&#93;</a></sup> In February 2010, however, Microsoft took a stance against adding additional public transport and <a href=\"/wiki/High-occupancy_vehicle_lane\" title=\"High-occupancy vehicle lane\">high-occupancy vehicle</a> (HOV) lanes to the <a href=\"/wiki/Washington_State_Route_520\" title=\"Washington State Route 520\">State Route 520</a> and <a href=\"/wiki/Evergreen_Point_Floating_Bridge\" title=\"Evergreen Point Floating Bridge\">its floating bridge</a> connecting Redmond to Seattle; the company did not want to delay the construction any further.<sup id=\"cite_ref-242\" class=\"reference\"><a href=\"#cite_note-242\">&#91;242&#93;</a></sup> Microsoft was ranked number 1 in the list of the World's Best Multinational Workplaces by the Great Place to Work Institute in 2011.<sup id=\"cite_ref-243\" class=\"reference\"><a href=\"#cite_note-243\">&#91;243&#93;</a></sup>\n</p><p>In January 2020, the company announced a strategy to take the company <a href=\"/wiki/Carbon_footprint\" title=\"Carbon footprint\">carbon negative</a> by 2030 and to <a href=\"/wiki/Carbon_dioxide_removal\" title=\"Carbon dioxide removal\">remove all carbon</a> that it has emitted since its foundation in 1975.<sup id=\"cite_ref-244\" class=\"reference\"><a href=\"#cite_note-244\">&#91;244&#93;</a></sup><sup id=\"cite_ref-245\" class=\"reference\"><a href=\"#cite_note-245\">&#91;245&#93;</a></sup><sup id=\"cite_ref-246\" class=\"reference\"><a href=\"#cite_note-246\">&#91;246&#93;</a></sup> On October 9, 2020, Microsoft permanently allowed <a href=\"/wiki/Remote_work\" title=\"Remote work\">remote work</a>.<sup id=\"cite_ref-247\" class=\"reference\"><a href=\"#cite_note-247\">&#91;247&#93;</a></sup> In January 2021, the company announced on <a href=\"/wiki/Twitter\" title=\"Twitter\">Twitter</a> to join the <a href=\"/wiki/Climate_Neutral_Data_Centre_Pact\" title=\"Climate Neutral Data Centre Pact\">Climate Neutral Data Centre Pact</a>, which engages the cloud infrastructure and data centers industries to reach <a href=\"/wiki/Carbon_neutrality\" class=\"mw-redirect\" title=\"Carbon neutrality\">carbon neutrality</a> in Europe by 2030, and also disclosed an investment in <a href=\"/wiki/Climeworks\" title=\"Climeworks\">Climeworks</a>, a <a href=\"/wiki/Direct_air_capture\" title=\"Direct air capture\">direct air capture</a> company partnered with <a href=\"/wiki/Carbfix\" title=\"Carbfix\">Carbfix</a> for <a href=\"/wiki/Carbon_sequestration\" title=\"Carbon sequestration\">carbon sequestration</a>.<sup id=\"cite_ref-MicrosoftClimeworks_253-0\" class=\"reference\"><a href=\"#cite_note-MicrosoftClimeworks-253\">&#91;list 1&#93;</a></sup> In the same year, it was awarded the EPA's Green Power Leadership Award, citing the company's use of 100 percent renewable energy since 2014.<sup id=\"cite_ref-254\" class=\"reference\"><a href=\"#cite_note-254\">&#91;253&#93;</a></sup>\n</p><p>In September 2023, Microsoft announced that it purchased $200 million in <a href=\"/wiki/Carbon_offsets_and_credits\" title=\"Carbon offsets and credits\">carbon credits to offset</a> 315,000 metric tons of carbon dioxide over 10 years from Heirloom Carbon, a carbon removal company that mixes <a href=\"/wiki/Calcium_oxide\" title=\"Calcium oxide\">calcium oxide</a> from heated crushed <a href=\"/wiki/Limestone\" title=\"Limestone\">limestone</a> with <a href=\"/wiki/Water\" title=\"Water\">water</a> to form <a href=\"/wiki/Orthocarbonic_acid\" title=\"Orthocarbonic acid\">carbon hydroxide</a> to absorb carbon dioxide from the atmosphere to <a href=\"/wiki/Mineralization_(soil_science)\" title=\"Mineralization (soil science)\">mineralize</a> back into limestone while the released carbon dioxide is <a href=\"/wiki/Carbon_capture_and_storage\" title=\"Carbon capture and storage\">stored underground</a> or <a href=\"/wiki/Environmental_impact_of_concrete#Carbon_concrete\" title=\"Environmental impact of concrete\">injected into concrete</a>.<sup id=\"cite_ref-255\" class=\"reference\"><a href=\"#cite_note-255\">&#91;254&#93;</a></sup><sup id=\"cite_ref-256\" class=\"reference\"><a href=\"#cite_note-256\">&#91;255&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Headquarters\">Headquarters</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Aerial_Microsoft_West_Campus_August_2009.jpg\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Aerial_Microsoft_West_Campus_August_2009.jpg/220px-Aerial_Microsoft_West_Campus_August_2009.jpg\" decoding=\"async\" width=\"220\" height=\"147\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Aerial_Microsoft_West_Campus_August_2009.jpg/330px-Aerial_Microsoft_West_Campus_August_2009.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Aerial_Microsoft_West_Campus_August_2009.jpg/440px-Aerial_Microsoft_West_Campus_August_2009.jpg 2x\" data-file-width=\"4752\" data-file-height=\"3168\" /></a><figcaption>The west campus of the <a href=\"/wiki/Microsoft_Redmond_campus\" class=\"mw-redirect\" title=\"Microsoft Redmond campus\">Microsoft Redmond campus</a></figcaption></figure>\n<p>The corporate headquarters, informally known as the <a href=\"/wiki/Microsoft_Redmond_campus\" class=\"mw-redirect\" title=\"Microsoft Redmond campus\">Microsoft Redmond campus</a>, is located at One Microsoft Way in Redmond, Washington. Microsoft initially moved onto the grounds of the campus on February 26, 1986, weeks before the company went public on March 13. The headquarters has since experienced multiple expansions since its establishment. It is estimated to encompass over 8&#160;million ft<sup>2</sup> (750,000&#160;m<sup>2</sup>) of office space and 30,000–40,000 employees.<sup id=\"cite_ref-257\" class=\"reference\"><a href=\"#cite_note-257\">&#91;256&#93;</a></sup> Additional offices are located in <a href=\"/wiki/Bellevue,_Washington\" title=\"Bellevue, Washington\">Bellevue</a> and <a href=\"/wiki/Issaquah,_Washington\" title=\"Issaquah, Washington\">Issaquah, Washington</a> (90,000 employees worldwide). The company is planning to upgrade its Mountain View, California, campus on a grand scale. The company has occupied this campus since 1981. In 2016, the company bought the 32-acre (13&#160;ha) campus, with plans to renovate and expand it by 25%.<sup id=\"cite_ref-258\" class=\"reference\"><a href=\"#cite_note-258\">&#91;257&#93;</a></sup> Microsoft operates an East Coast headquarters in <a href=\"/wiki/Charlotte,_North_Carolina\" title=\"Charlotte, North Carolina\">Charlotte, North Carolina</a>,<sup id=\"cite_ref-259\" class=\"reference\"><a href=\"#cite_note-259\">&#91;258&#93;</a></sup> where the construction of a data center led to the destruction of a historic black cemetery.<sup id=\"cite_ref-260\" class=\"reference\"><a href=\"#cite_note-260\">&#91;259&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Flagship_stores\">Flagship stores</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:TorontoMicrosoftStore8.JPG\" class=\"mw-file-description\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f7/TorontoMicrosoftStore8.JPG/220px-TorontoMicrosoftStore8.JPG\" decoding=\"async\" width=\"220\" height=\"146\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f7/TorontoMicrosoftStore8.JPG/330px-TorontoMicrosoftStore8.JPG 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f7/TorontoMicrosoftStore8.JPG/440px-TorontoMicrosoftStore8.JPG 2x\" data-file-width=\"4928\" data-file-height=\"3264\" /></a><figcaption>Microsoft's <a href=\"/wiki/Toronto\" title=\"Toronto\">Toronto</a> flagship store</figcaption></figure>\n<p>On October 26, 2015, the company opened its retail location on Fifth Avenue in New York City. The location features a five-story glass storefront and is 22,270 square feet.<sup id=\"cite_ref-261\" class=\"reference\"><a href=\"#cite_note-261\">&#91;260&#93;</a></sup> As per company executives, Microsoft had been on the lookout for a flagship location since 2009.<sup id=\"cite_ref-262\" class=\"reference\"><a href=\"#cite_note-262\">&#91;261&#93;</a></sup> The company's retail locations are part of a greater strategy to help build a connection with its consumers. The opening of the store coincided with the launch of the Surface Book and Surface Pro 4.<sup id=\"cite_ref-263\" class=\"reference\"><a href=\"#cite_note-263\">&#91;262&#93;</a></sup> On November 12, 2015, Microsoft opened a second flagship store, located in Sydney's Pitt Street Mall.<sup id=\"cite_ref-264\" class=\"reference\"><a href=\"#cite_note-264\">&#91;263&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Logo\">Logo</span></h3>\n<p>Microsoft adopted the so-called \"<i><a href=\"/wiki/Pac-Man\" title=\"Pac-Man\">Pac-Man</a></i> Logo,\" designed by Scott Baker, in February 26, 1987, with the concept being similar to <a href=\"/wiki/InFocus\" title=\"InFocus\">InFocus Corporation</a> logo that was adapted a year earlier in 1986. Baker stated \"The new logo, in <a href=\"/wiki/Helvetica\" title=\"Helvetica\">Helvetica</a> italic typeface, has a slash between the <i>o</i> and <i>s</i> to emphasize the \"soft\" part of the name and convey motion and speed.\"<sup id=\"cite_ref-265\" class=\"reference\"><a href=\"#cite_note-265\">&#91;264&#93;</a></sup> Dave Norris ran an internal joke campaign to save the old logo, which was green, in all uppercase, and featured a fanciful letter <i>O</i>, nicknamed the <i>blibbet</i>, but it was discarded.<sup id=\"cite_ref-266\" class=\"reference\"><a href=\"#cite_note-266\">&#91;265&#93;</a></sup>\n</p><p>Microsoft's logo with the tagline \"Your potential. Our passion.\"—below the main corporate name—is based on a slogan Microsoft used in 2008. In 2002, the company started using the logo in the United States and eventually started a television campaign with the slogan, changed from the previous tagline of <i>\"<a href=\"/wiki/Where_do_you_want_to_go_today%3F\" title=\"Where do you want to go today?\">Where do you want to go today?</a>\"</i><sup id=\"cite_ref-wherego1_267-0\" class=\"reference\"><a href=\"#cite_note-wherego1-267\">&#91;266&#93;</a></sup><sup id=\"cite_ref-potentialpassion1_268-0\" class=\"reference\"><a href=\"#cite_note-potentialpassion1-268\">&#91;267&#93;</a></sup><sup id=\"cite_ref-269\" class=\"reference\"><a href=\"#cite_note-269\">&#91;268&#93;</a></sup> During the private MGX (Microsoft Global Exchange) conference in 2010, Microsoft unveiled the company's next tagline, <i>\"Be What's Next.\"</i><sup id=\"cite_ref-270\" class=\"reference\"><a href=\"#cite_note-270\">&#91;269&#93;</a></sup> They also had a slogan/tagline \"Making it all make sense.\"<sup id=\"cite_ref-271\" class=\"reference\"><a href=\"#cite_note-271\">&#91;270&#93;</a></sup> The Microsoft <i>Pac-Man</i> logo was used for 25 years, 5 months, and 28 days until August 23, 2012, being the longest logo to be used by the company.\n</p><p>On August 23, 2012, Microsoft unveiled a new corporate logo at the opening of its 23rd Microsoft store in Boston, indicating the company's shift of focus from the classic style to the tile-centric modern interface, which it uses/will use on the Windows Phone platform, Xbox 360, Windows 8 and the upcoming Office Suites.<sup id=\"cite_ref-272\" class=\"reference\"><a href=\"#cite_note-272\">&#91;271&#93;</a></sup> The new logo also includes four squares with the colors of the then-current Windows logo which have been used to represent Microsoft's four major products: Windows (blue), Office (orange), Xbox (green) and Bing (yellow).<sup id=\"cite_ref-273\" class=\"reference\"><a href=\"#cite_note-273\">&#91;272&#93;</a></sup> The logo also resembles the opening of one of the commercials for <a href=\"/wiki/Windows_95\" title=\"Windows 95\">Windows 95</a>.<sup id=\"cite_ref-274\" class=\"reference\"><a href=\"#cite_note-274\">&#91;273&#93;</a></sup><sup id=\"cite_ref-275\" class=\"reference\"><a href=\"#cite_note-275\">&#91;274&#93;</a></sup>\n</p>\n<ul class=\"gallery mw-gallery-traditional center\">\n\t<li class=\"gallerycaption\">Microsoft logo history</li>\n\t\t<li class=\"gallerybox\" style=\"width: 235px\">\n\t\t\t<div class=\"thumb\" style=\"width: 230px; height: 150px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(1975).svg\" class=\"mw-file-description\" title=\"April 4, 1975–1980: First Microsoft logo\"><img alt=\"April 4, 1975–1980: First Microsoft logo\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Microsoft_logo_%281975%29.svg/200px-Microsoft_logo_%281975%29.svg.png\" decoding=\"async\" width=\"200\" height=\"83\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Microsoft_logo_%281975%29.svg/300px-Microsoft_logo_%281975%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/60/Microsoft_logo_%281975%29.svg/400px-Microsoft_logo_%281975%29.svg.png 2x\" data-file-width=\"686\" data-file-height=\"285\" /></a></span></div>\n\t\t\t<div class=\"gallerytext\">April 4, 1975–1980: First Microsoft logo</div>\n\t\t</li>\n\t\t<li class=\"gallerybox\" style=\"width: 235px\">\n\t\t\t<div class=\"thumb\" style=\"width: 230px; height: 150px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(1980).svg\" class=\"mw-file-description\" title=\"1980–June 25, 1982: Second Microsoft logo\"><img alt=\"1980–June 25, 1982: Second Microsoft logo\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Microsoft_logo_%281980%29.svg/200px-Microsoft_logo_%281980%29.svg.png\" decoding=\"async\" width=\"200\" height=\"40\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Microsoft_logo_%281980%29.svg/300px-Microsoft_logo_%281980%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Microsoft_logo_%281980%29.svg/400px-Microsoft_logo_%281980%29.svg.png 2x\" data-file-width=\"1000\" data-file-height=\"200\" /></a></span></div>\n\t\t\t<div class=\"gallerytext\">1980–June 25, 1982: Second Microsoft logo</div>\n\t\t</li>\n\t\t<li class=\"gallerybox\" style=\"width: 235px\">\n\t\t\t<div class=\"thumb\" style=\"width: 230px; height: 150px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(1982).svg\" class=\"mw-file-description\" title=\"June 25, 1982–February 26, 1987: Third Microsoft logo\"><img alt=\"June 25, 1982–February 26, 1987: Third Microsoft logo\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Microsoft_logo_%281982%29.svg/200px-Microsoft_logo_%281982%29.svg.png\" decoding=\"async\" width=\"200\" height=\"29\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Microsoft_logo_%281982%29.svg/300px-Microsoft_logo_%281982%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/47/Microsoft_logo_%281982%29.svg/400px-Microsoft_logo_%281982%29.svg.png 2x\" data-file-width=\"946\" data-file-height=\"135\" /></a></span></div>\n\t\t\t<div class=\"gallerytext\">June 25, 1982–February 26, 1987: Third Microsoft logo</div>\n\t\t</li>\n\t\t<li class=\"gallerybox\" style=\"width: 235px\">\n\t\t\t<div class=\"thumb\" style=\"width: 230px; height: 150px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(1987).svg\" class=\"mw-file-description\" title=\"February 26, 1987–August 23, 2012: Microsoft &quot;Pac-Man&quot; logo, designed by Scott Baker[266][267]\"><img alt=\"February 26, 1987–August 23, 2012: Microsoft &quot;Pac-Man&quot; logo, designed by Scott Baker[266][267]\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Microsoft_logo_%281987%29.svg/200px-Microsoft_logo_%281987%29.svg.png\" decoding=\"async\" width=\"200\" height=\"33\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Microsoft_logo_%281987%29.svg/300px-Microsoft_logo_%281987%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Microsoft_logo_%281987%29.svg/400px-Microsoft_logo_%281987%29.svg.png 2x\" data-file-width=\"1000\" data-file-height=\"166\" /></a></span></div>\n\t\t\t<div class=\"gallerytext\">February 26, 1987–August 23, 2012: Microsoft \"<a href=\"/wiki/Pac-Man\" title=\"Pac-Man\">Pac-Man</a>\" logo, designed by Scott Baker<sup id=\"cite_ref-wherego1_267-1\" class=\"reference\"><a href=\"#cite_note-wherego1-267\">&#91;266&#93;</a></sup><sup id=\"cite_ref-potentialpassion1_268-1\" class=\"reference\"><a href=\"#cite_note-potentialpassion1-268\">&#91;267&#93;</a></sup></div>\n\t\t</li>\n\t\t<li class=\"gallerybox\" style=\"width: 235px\">\n\t\t\t<div class=\"thumb\" style=\"width: 230px; height: 150px;\"><span typeof=\"mw:File\"><a href=\"/wiki/File:Microsoft_logo_(2012).svg\" class=\"mw-file-description\" title=\"August 23, 2012–present: Fifth and current Microsoft logo[275]\"><img alt=\"August 23, 2012–present: Fifth and current Microsoft logo[275]\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/200px-Microsoft_logo_%282012%29.svg.png\" decoding=\"async\" width=\"200\" height=\"43\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/300px-Microsoft_logo_%282012%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/96/Microsoft_logo_%282012%29.svg/400px-Microsoft_logo_%282012%29.svg.png 2x\" data-file-width=\"512\" data-file-height=\"109\" /></a></span></div>\n\t\t\t<div class=\"gallerytext\">August 23, 2012–present: Fifth and current Microsoft logo<sup id=\"cite_ref-276\" class=\"reference\"><a href=\"#cite_note-276\">&#91;275&#93;</a></sup></div>\n\t\t</li>\n</ul>\n<h3><span class=\"mw-headline\" id=\"Sponsorship\">Sponsorship</span></h3>\n<figure class=\"mw-default-size\" typeof=\"mw:File/Thumb\"><a href=\"/wiki/File:Toyota_Yaris_WRC.jpg\" class=\"mw-file-description\"><img alt=\"Toyota Yaris WRC.jpg\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Toyota_Yaris_WRC.jpg/220px-Toyota_Yaris_WRC.jpg\" decoding=\"async\" width=\"220\" height=\"147\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Toyota_Yaris_WRC.jpg/330px-Toyota_Yaris_WRC.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Toyota_Yaris_WRC.jpg/440px-Toyota_Yaris_WRC.jpg 2x\" data-file-width=\"5152\" data-file-height=\"3439\" /></a><figcaption>Toyota Yaris WRC</figcaption></figure>\n<p>The company was the official jersey sponsor of <a href=\"/wiki/Finland_national_basketball_team\" class=\"mw-redirect\" title=\"Finland national basketball team\">Finland's national basketball team</a> at <a href=\"/wiki/EuroBasket_2015\" title=\"EuroBasket 2015\">EuroBasket 2015</a>.<sup id=\"cite_ref-277\" class=\"reference\"><a href=\"#cite_note-277\">&#91;276&#93;</a></sup>\n</p><p>The company was a major sponsor of the <a href=\"/wiki/Toyota_Gazoo_Racing_WRT\" title=\"Toyota Gazoo Racing WRT\">Toyota Gazoo Racing WRT</a> (<a href=\"/wiki/2017_WRC\" class=\"mw-redirect\" title=\"2017 WRC\">2017</a>–<a href=\"/wiki/2020_World_Rally_Championship\" title=\"2020 World Rally Championship\">2020</a>).\n</p><p>The company was a sponsor of the <a href=\"/wiki/Renault_F1_Team\" class=\"mw-redirect\" title=\"Renault F1 Team\">Renault F1 Team</a> (<a href=\"/wiki/2016_Formula_One_World_Championship\" title=\"2016 Formula One World Championship\">2016</a>–<a href=\"/wiki/2020_Formula_One_World_Championship\" title=\"2020 Formula One World Championship\">2020</a>).\n</p>\n<h3><span class=\"mw-headline\" id=\"Philanthropy\">Philanthropy</span></h3>\n<p>In 2015, Microsoft Philanthropies, an internal charitable organization, was established. Its mission is to bring the benefits of technology to parts of the world and segments of the population that have been denied the benefits of the digital revolution. Key areas of focus: donating cloud computing resources to university researchers and nonprofit groups; supporting the expansion of broadband access worldwide; funding international computer science education through YouthSpark; supporting tech education in the U.S. from kindergarten to high school; and donating to global child and refugee relief organizations.<sup id=\"cite_ref-278\" class=\"reference\"><a href=\"#cite_note-278\">&#91;277&#93;</a></sup><sup id=\"cite_ref-279\" class=\"reference\"><a href=\"#cite_note-279\">&#91;278&#93;</a></sup>\n</p><p>During the <a href=\"/wiki/COVID-19_pandemic\" title=\"COVID-19 pandemic\">COVID-19 pandemic</a>, Microsoft's president, <a href=\"/wiki/Brad_Smith_(American_lawyer)\" title=\"Brad Smith (American lawyer)\">Brad Smith</a>, announced that an initial batch of supplies, including 15,000 protection goggles, <a href=\"/wiki/Infrared_thermometer\" title=\"Infrared thermometer\">infrared thermometers</a>, medical caps, and protective suits, was donated to Seattle, with further aid to come soon.<sup id=\"cite_ref-280\" class=\"reference\"><a href=\"#cite_note-280\">&#91;279&#93;</a></sup>\n</p><p>During <a href=\"/wiki/2022_Russian_invasion_of_Ukraine\" class=\"mw-redirect\" title=\"2022 Russian invasion of Ukraine\">2022 Russian invasion of Ukraine</a> Microsoft started monitoring cyberattacks originating from the Russian government and Russia-backed hackers. In June 2022, Microsoft published the report on Russian cyber attacks and concluded that state-backed Russian hackers \"have engaged in \"strategic espionage\" against governments, think tanks, businesses and aid groups\" in 42 countries supporting Kyiv.<sup id=\"cite_ref-281\" class=\"reference\"><a href=\"#cite_note-281\">&#91;280&#93;</a></sup><sup id=\"cite_ref-282\" class=\"reference\"><a href=\"#cite_note-282\">&#91;281&#93;</a></sup>\n</p>\n<h3><span class=\"mw-headline\" id=\"Controversies\">Controversies</span></h3>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1033289096\"><div role=\"note\" class=\"hatnote navigation-not-searchable\">Main articles: <a href=\"/wiki/Microsoft_litigation\" title=\"Microsoft litigation\">Microsoft litigation</a> and <a href=\"/wiki/Criticism_of_Microsoft\" title=\"Criticism of Microsoft\">Criticism of Microsoft</a></div>\n<p>Criticism of Microsoft has followed various aspects of its products and business practices. Frequently criticized are the <a href=\"/wiki/Ease_of_use\" class=\"mw-redirect\" title=\"Ease of use\">ease of use</a>, <a href=\"/wiki/Robustness_(computer_science)\" title=\"Robustness (computer science)\">robustness</a>, and <a href=\"/wiki/Computer_security\" title=\"Computer security\">security</a> of the company's software. They have also been criticized for the use of <a href=\"/wiki/Permatemp\" title=\"Permatemp\">permatemp</a> employees (employees employed for years as \"temporary,\" and therefore without medical benefits), the use of <a href=\"/wiki/Forced_retention\" class=\"mw-redirect\" title=\"Forced retention\">forced retention</a> tactics, which means that employees would be sued if they tried to leave.<sup id=\"cite_ref-283\" class=\"reference\"><a href=\"#cite_note-283\">&#91;282&#93;</a></sup> Historically, Microsoft has also been accused of overworking employees, in many cases, leading to <a href=\"/wiki/Occupational_burnout\" title=\"Occupational burnout\">burnout</a> within just a few years of joining the company. The company is often referred to as a \"Velvet Sweatshop\", a term which originated in a 1989 <i><a href=\"/wiki/Seattle_Times\" class=\"mw-redirect\" title=\"Seattle Times\">Seattle Times</a></i> article,<sup id=\"cite_ref-284\" class=\"reference\"><a href=\"#cite_note-284\">&#91;283&#93;</a></sup> and later became used to describe the company by some of Microsoft's own employees.<sup id=\"cite_ref-285\" class=\"reference\"><a href=\"#cite_note-285\">&#91;284&#93;</a></sup> This characterization is derived from the perception that Microsoft provides nearly everything for its employees in a convenient place, but in turn overworks them to a point where it would be bad for their (possibly long-term) health.\n</p><p>As reported by several news outlets,<sup id=\"cite_ref-286\" class=\"reference\"><a href=\"#cite_note-286\">&#91;285&#93;</a></sup><sup id=\"cite_ref-Neate_287-0\" class=\"reference\"><a href=\"#cite_note-Neate-287\">&#91;286&#93;</a></sup> an Irish subsidiary of Microsoft based in the <a href=\"/wiki/Republic_of_Ireland\" title=\"Republic of Ireland\">Republic of Ireland</a> declared £220 bn in profits but paid no corporation tax for the year 2020. This is due to the company being tax resident in <a href=\"/wiki/Bermuda\" title=\"Bermuda\">Bermuda</a> as mentioned in the accounts for 'Microsoft Round Island One, a subsidiary that collects license fees from the use of Microsoft software worldwide. Dame <a href=\"/wiki/Margaret_Hodge\" title=\"Margaret Hodge\">Margaret Hodge</a>, a <a href=\"/wiki/Labour_Party_(UK)\" title=\"Labour Party (UK)\">Labour</a> <a href=\"/wiki/Member_of_Parliament_(United_Kingdom)\" title=\"Member of Parliament (United Kingdom)\">MP</a> in the UK said, \"It is unsurprising – yet still shocking – that massively wealthy global corporations openly, unashamedly and blatantly refuse to pay tax on the profits they make in the countries where they undertake business\".<sup id=\"cite_ref-Neate_287-1\" class=\"reference\"><a href=\"#cite_note-Neate-287\">&#91;286&#93;</a></sup>\n</p><p>In 2020, <a href=\"/wiki/ProPublica\" title=\"ProPublica\">ProPublica</a> reported that the company had diverted more than $39 billion in U.S. profits to Puerto Rico using a mechanism structured to make it seem as if the company was unprofitable on paper. As a result, the company paid a tax rate on those profits of \"nearly 0%.\" When the <a href=\"/wiki/Internal_Revenue_Service\" title=\"Internal Revenue Service\">Internal Revenue Service</a> audited these transactions, ProPublica reported that Microsoft aggressively fought back, including successfully lobbying Congress to change the law to make it harder for the agency to conduct audits of large corporations.<sup id=\"cite_ref-288\" class=\"reference\"><a href=\"#cite_note-288\">&#91;287&#93;</a></sup><sup id=\"cite_ref-289\" class=\"reference\"><a href=\"#cite_note-289\">&#91;288&#93;</a></sup>\n</p><p>\"Embrace, extend, and extinguish\" (EEE),<sup id=\"cite_ref-DeadlyEmbrace_290-0\" class=\"reference\"><a href=\"#cite_note-DeadlyEmbrace-290\">&#91;289&#93;</a></sup> also known as \"embrace, extend, and exterminate,\"<sup id=\"cite_ref-291\" class=\"reference\"><a href=\"#cite_note-291\">&#91;290&#93;</a></sup> is a phrase that the <a href=\"/wiki/United_States_Department_of_Justice\" title=\"United States Department of Justice\">U.S. Department of Justice</a> found<sup id=\"cite_ref-292\" class=\"reference\"><a href=\"#cite_note-292\">&#91;291&#93;</a></sup> that was used internally by Microsoft<sup id=\"cite_ref-293\" class=\"reference\"><a href=\"#cite_note-293\">&#91;292&#93;</a></sup> to describe its strategy for entering product categories involving widely used standards, extending those standards with <a href=\"/wiki/Proprietary_software\" title=\"Proprietary software\">proprietary</a> capabilities, and then using those differences to strongly disadvantage competitors. Microsoft is frequently accused of using anticompetitive tactics and abusing its monopolistic power. People who use their products and services often end up becoming dependent on them, a process is known as <a href=\"/wiki/Vendor_lock-in\" title=\"Vendor lock-in\">vendor lock-in</a>.\n</p><p>Microsoft was the first company to participate in <a href=\"/wiki/PRISM_(surveillance_program)\" class=\"mw-redirect\" title=\"PRISM (surveillance program)\">the PRISM surveillance program</a>, according to leaked NSA documents obtained by <i>The Guardian</i><sup id=\"cite_ref-294\" class=\"reference\"><a href=\"#cite_note-294\">&#91;293&#93;</a></sup> and <i>The Washington Post</i><sup id=\"cite_ref-295\" class=\"reference\"><a href=\"#cite_note-295\">&#91;294&#93;</a></sup> in June 2013, and acknowledged by government officials following the leak.<sup id=\"cite_ref-296\" class=\"reference\"><a href=\"#cite_note-296\">&#91;295&#93;</a></sup> The program authorizes the government to secretly access data of non-US citizens hosted by American companies without a warrant. Microsoft has denied participation in such a program.<sup id=\"cite_ref-297\" class=\"reference\"><a href=\"#cite_note-297\">&#91;296&#93;</a></sup>\n</p><p><a href=\"/wiki/Jesse_Jackson\" title=\"Jesse Jackson\">Jesse Jackson</a> believes Microsoft should hire more <a href=\"/wiki/Minorities\" class=\"mw-redirect\" title=\"Minorities\">minorities</a> and women. In 2015, he praised Microsoft for appointing two women to its board of directors.<sup id=\"cite_ref-298\" class=\"reference\"><a href=\"#cite_note-298\">&#91;297&#93;</a></sup>\n</p><p>In 2020, <a href=\"/wiki/Salesforce\" title=\"Salesforce\">Salesforce</a>, the manufacturer of the <a href=\"/wiki/Slack_(software)\" title=\"Slack (software)\">Slack</a> platform, complained to European regulators about Microsoft due to the integration of the Teams service into Office 365. Negotiations with the European Commission continued until the summer of 2023, but, as it became known to the media, they reached an impasse. Microsoft is now facing an antitrust investigation.<sup id=\"cite_ref-299\" class=\"reference\"><a href=\"#cite_note-299\">&#91;298&#93;</a></sup>\n</p>\n<h2><span class=\"mw-headline\" id=\"See_also\">See also</span></h2>\n<ul><li><a href=\"/wiki/List_of_Microsoft_software\" title=\"List of Microsoft software\">List of Microsoft software</a></li>\n<li><a href=\"/wiki/Microsoft_hardware\" title=\"Microsoft hardware\">Microsoft hardware</a></li>\n<li><a href=\"/wiki/List_of_mergers_and_acquisitions_by_Microsoft\" title=\"List of mergers and acquisitions by Microsoft\">List of mergers and acquisitions by Microsoft</a></li>\n<li><a href=\"/wiki/Microsoft_engineering_groups\" title=\"Microsoft engineering groups\">Microsoft engineering groups</a></li>\n<li><a href=\"/wiki/Microsoft_Enterprise_Agreement\" title=\"Microsoft Enterprise Agreement\">Microsoft Enterprise Agreement</a></li></ul>\n<h2><span class=\"mw-headline\" id=\"References\">References</span></h2>\n<style data-mw-deduplicate=\"TemplateStyles:r1011085734\">.mw-parser-output .reflist{font-size:90%;margin-bottom:0.5em;list-style-type:decimal}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class=\"reflist\">\n<div class=\"mw-references-wrap mw-references-columns\"><ol class=\"references\">\n<li id=\"cite_note-1\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-1\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.sec.gov/ix?doc=/Archives/edgar/data/789019/000095017023035122/msft-20230630.htm\">\"Microsoft Corporation Form 10-K\"</a>. <a href=\"/wiki/U.S._Securities_and_Exchange_Commission\" title=\"U.S. Securities and Exchange Commission\">U.S. Securities and Exchange Commission</a>. July 27, 2023. pp.&#160;9, 58, 60.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Microsoft+Corporation+Form+10-K&amp;rft.pages=9%2C+58%2C+60&amp;rft.pub=U.S.+Securities+and+Exchange+Commission&amp;rft.date=2023-07-27&amp;rft_id=https%3A%2F%2Fwww.sec.gov%2Fix%3Fdoc%3D%2FArchives%2Fedgar%2Fdata%2F789019%2F000095017023035122%2Fmsft-20230630.htm&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-2\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-2\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.microsoft.com/en-us/investor/faq.aspx\">\"Microsoft Investor Relations - FAQs\"</a>. <i><a class=\"mw-selflink selflink\">Microsoft</a></i>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Microsoft&amp;rft.atitle=Microsoft+Investor+Relations+-+FAQs&amp;rft_id=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Finvestor%2Ffaq.aspx&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-3\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-3\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"https://fortune.com/fortune500/2022/search/\">\"Fortune 500 Companies 2019: Who Made the List\"</a>. <a href=\"/wiki/Fortune_(magazine)\" title=\"Fortune (magazine)\">Fortune</a><span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">July 1,</span> 2022</span>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Fortune+500+Companies+2019%3A+Who+Made+the+List&amp;rft.pub=Fortune&amp;rft_id=https%3A%2F%2Ffortune.com%2Ffortune500%2F2022%2Fsearch%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-4\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-4\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite id=\"CITEREFWarren2023\" class=\"citation web cs1\">Warren, Tom (October 13, 2023). <a rel=\"nofollow\" class=\"external text\" href=\"https://www.theverge.com/2023/10/13/23791235/microsoft-activision-blizzard-acquisition-complete-finalized\">\"Microsoft completes Activision Blizzard acquisition, Call of Duty now part of Xbox\"</a>. <i>The Verge</i><span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">November 1,</span> 2023</span>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=The+Verge&amp;rft.atitle=Microsoft+completes+Activision+Blizzard+acquisition%2C+Call+of+Duty+now+part+of+Xbox&amp;rft.date=2023-10-13&amp;rft.aulast=Warren&amp;rft.aufirst=Tom&amp;rft_id=https%3A%2F%2Fwww.theverge.com%2F2023%2F10%2F13%2F23791235%2Fmicrosoft-activision-blizzard-acquisition-complete-finalized&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-5\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-5\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.sec.gov/Archives/edgar/data/1271024/000110465916161289/a16-22816_18k.htm\">\"U.S. Securities and Exchange Commission&#160;&#8211;&#32; Linkedin\"</a>. <i>US SEC</i>. December 8, 2016. <a rel=\"nofollow\" class=\"external text\" href=\"https://web.archive.org/web/20171018154931/https://www.sec.gov/Archives/edgar/data/1271024/000110465916161289/a16-22816_18k.htm\">Archived</a> from the original on October 18, 2017<span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">April 29,</span> 2018</span>. <q>As a result of the Merger, a change in control of [Linkedin] occurred and [Linkedin] became a wholly-owned subsidiary of [Microsoft]. The transaction resulted in the payment of approximately $26.4 billion in cash merger consideration.</q></cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=US+SEC&amp;rft.atitle=U.S.+Securities+and+Exchange+Commission+%26ndash%3B%26%2332%3B+Linkedin&amp;rft.date=2016-12-08&amp;rft_id=https%3A%2F%2Fwww.sec.gov%2FArchives%2Fedgar%2Fdata%2F1271024%2F000110465916161289%2Fa16-22816_18k.htm&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-6\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-6\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.bbc.com/news/business-13343600\">\"Microsoft confirms takeover of Skype\"</a>. BBC. May 10, 2011. <a rel=\"nofollow\" class=\"external text\" href=\"https://web.archive.org/web/20180620073353/https://www.bbc.com/news/business-13343600\">Archived</a> from the original on June 20, 2018<span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">April 29,</span> 2018</span>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Microsoft+confirms+takeover+of+Skype&amp;rft.pub=BBC&amp;rft.date=2011-05-10&amp;rft_id=https%3A%2F%2Fwww.bbc.com%2Fnews%2Fbusiness-13343600&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-7\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-7\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite id=\"CITEREFKeizer2014\" class=\"citation web cs1\">Keizer, Gregg (July 14, 2014). <a rel=\"nofollow\" class=\"external text\" href=\"http://www.computerworld.com/article/2490008/microsoft-windows/microsoft-gets-real--admits-its-device-share-is-just-14-.html\">\"Microsoft gets real, admits its device share is just 14%\"</a>. <i><a href=\"/wiki/Computerworld\" title=\"Computerworld\">Computerworld</a></i>. <a href=\"/wiki/International_Data_Group\" title=\"International Data Group\">International Data Group</a>. <a rel=\"nofollow\" class=\"external text\" href=\"https://web.archive.org/web/20160821210826/http://www.computerworld.com/article/2490008/microsoft-windows/microsoft-gets-real--admits-its-device-share-is-just-14-.html\">Archived</a> from the original on August 21, 2016. <q>[Microsoft's chief operating officer] Turner's 14% came from a new forecast released last week by Gartner, which estimated Windows' share of the shipped device market last year was 14% and would decrease slightly to 13.7% in 2014. [..] Android will dominate, Gartner said, with a 48% share this year</q></cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=Computerworld&amp;rft.atitle=Microsoft+gets+real%2C+admits+its+device+share+is+just+14%25&amp;rft.date=2014-07-14&amp;rft.aulast=Keizer&amp;rft.aufirst=Gregg&amp;rft_id=http%3A%2F%2Fwww.computerworld.com%2Farticle%2F2490008%2Fmicrosoft-windows%2Fmicrosoft-gets-real--admits-its-device-share-is-just-14-.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-8\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-8\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite id=\"CITEREFBlodget2013\" class=\"citation news cs1\">Blodget, Henry (August 23, 2013). <a rel=\"nofollow\" class=\"external text\" href=\"https://www.businessinsider.com.au/microsoft-device-and-services-2013-8\">\"And Microsoft Is Giving Up On The Software Business!\"</a>. <i>Business Insider Australia</i>. <a rel=\"nofollow\" class=\"external text\" href=\"https://web.archive.org/web/20170802165822/https://www.businessinsider.com.au/microsoft-device-and-services-2013-8\">Archived</a> from the original on August 2, 2017<span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">August 2,</span> 2017</span>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Business+Insider+Australia&amp;rft.atitle=And+Microsoft+Is+Giving+Up+On+The+Software+Business%21&amp;rft.date=2013-08-23&amp;rft.aulast=Blodget&amp;rft.aufirst=Henry&amp;rft_id=https%3A%2F%2Fwww.businessinsider.com.au%2Fmicrosoft-device-and-services-2013-8&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n<li id=\"cite_note-9\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-9\">^</a></b></span> <span class=\"reference-text\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1133582631\"><cite class=\"citation web cs1\"><a rel=\"nofollow\" class=\"external text\" href=\"http://www.informationweek.com/applications/notify-the-next-of-kin/d/d-id/1090416\">\"Notify The Next Of Kin\"</a>. <i><a href=\"/wiki/InformationWeek\" title=\"InformationWeek\">InformationWeek</a></i>. June 30, 2010. <a rel=\"nofollow\" class=\"external text\" href=\"https://web.archive.org/web/20140424124515/http://www.informationweek.com/applications/notify-the-next-of-kin/d/d-id/1090416\">Archived</a> from the original on April 24, 2014<span class=\"reference-accessdate\">. Retrieved <span class=\"nowrap\">April 24,</span> 2014</span>.</cite><span title=\"ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=InformationWeek&amp;rft.atitle=Notify+The+Next+Of+Kin&amp;rft.date=2010-06-30&amp;rft_id=http%3A%2F%2Fwww.informationweek.com%2Fapplications%2Fnotify-the-next-of-kin%2Fd%2Fd-id%2F1090416&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMicrosoft\" class=\"Z3988\"></span></span>\n</li>\n</ol></div></div>\n<dl><dt>Bundled references</dt></dl>\n<link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1011085734\"><div class=\"reflist\">\n<div class=\"mw-references-wrap\"><ol class=\"references\">\n<li id=\"cite_note-MicrosoftClimeworks-253\"><span class=\"mw-cite-backlink\"><b><a href=\"#cite_ref-MicrosoftClimeworks_253-0\">^</a></b></span> <span class=\"reference-text\"><sup id=\"cite_ref-248\" class=\"reference\"><a href=\"#cite_note-248\">&#91;248&#93;</a></sup><sup id=\"cite_ref-249\" class=\"reference\"><a href=\"#cite_note-249\">&#91;249&#93;</a></sup><sup id=\"cite_ref-250\" class=\"reference\"><a href=\"#cite_note-250\">&#91;250&#93;</a></sup><sup id=\"cite_ref-251\" class=\"reference\"><a href=\"#cite_note-251\">&#91;251&#93;</a></sup><sup id=\"cite_ref-252\" class=\"reference\"><a href=\"#cite_note-252\">&#91;252&#93;</a></sup></span>\n</li>\n</ol></div></div>\n<h2><span class=\"mw-headline\" id=\"External_links\">External links</span></h2>\n<ul><li><span class=\"official-website\"><span class=\"url\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.microsoft.com/\">Official website</a></span></span> <span class=\"mw-valign-text-top\" typeof=\"mw:File/Frameless\"><a href=\"https://www.wikidata.org/wiki/Q2283#P856\" title=\"Edit this at Wikidata\"><img alt=\"Edit this at Wikidata\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png\" decoding=\"async\" width=\"10\" height=\"10\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x\" data-file-width=\"20\" data-file-height=\"20\" /></a></span></li>\n<li>Business data for Microsoft Corporation: <link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><div class=\"hlist inline\"><ul><li><a rel=\"nofollow\" class=\"external text\" href=\"https://www.bloomberg.com/quote/MSFT:US\">Bloomberg</a></li><li><a rel=\"nofollow\" class=\"external text\" href=\"https://www.google.com/finance/quote/MSFT:NASDAQ\">Google</a></li><li><a rel=\"nofollow\" class=\"external text\" href=\"https://www.reuters.com/markets/companies/MSFT.O\">Reuters</a></li><li><a rel=\"nofollow\" class=\"external text\" href=\"https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&amp;CIK=789019\">SEC filings</a></li><li><a rel=\"nofollow\" class=\"external text\" href=\"https://finance.yahoo.com/quote/MSFT\">Yahoo!</a></li></ul></div></li>\n<li><a rel=\"nofollow\" class=\"external text\" href=\"https://opencorporates.com/corporate_groupings/Microsoft\">Microsoft companies</a> grouped at <a href=\"/wiki/OpenCorporates\" title=\"OpenCorporates\">OpenCorporates</a></li></ul>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><style data-mw-deduplicate=\"TemplateStyles:r1061467846\">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}</style></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Microsoft\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible mw-collapsed navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Microsoft\" title=\"Template:Microsoft\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Microsoft\" title=\"Template talk:Microsoft\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Microsoft\" title=\"Special:EditPage/Template:Microsoft\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Microsoft\" style=\"font-size:114%;margin:0 4em\"><a class=\"mw-selflink selflink\">Microsoft</a></div></th></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>\n<ul><li><a href=\"/wiki/History_of_Microsoft\" title=\"History of Microsoft\">History</a></li>\n<li><a href=\"/wiki/Outline_of_Microsoft\" title=\"Outline of Microsoft\">Outline</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">People</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\"></div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Founders</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Bill_Gates\" title=\"Bill Gates\">Bill Gates</a></li>\n<li><a href=\"/wiki/Paul_Allen\" title=\"Paul Allen\">Paul Allen</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Board of directors</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a> (Chairman and CEO)</li>\n<li><a href=\"/wiki/John_W._Thompson\" title=\"John W. Thompson\">John W. Thompson</a></li>\n<li><a href=\"/wiki/John_W._Stanton\" title=\"John W. Stanton\">John W. Stanton</a></li>\n<li><a href=\"/wiki/Reid_Hoffman\" title=\"Reid Hoffman\">Reid Hoffman</a></li>\n<li><a href=\"/wiki/Sandi_Peterson\" title=\"Sandi Peterson\">Sandi Peterson</a></li>\n<li><a href=\"/wiki/Penny_Pritzker\" title=\"Penny Pritzker\">Penny Pritzker</a></li>\n<li><a href=\"/wiki/Carlos_A._Rodriguez\" title=\"Carlos A. Rodriguez\">Carlos A. Rodriguez</a></li>\n<li><a href=\"/wiki/Charles_Scharf\" title=\"Charles Scharf\">Charles Scharf</a></li>\n<li><a href=\"/wiki/Emma_Walmsley\" title=\"Emma Walmsley\">Emma Walmsley</a></li>\n<li><a href=\"/wiki/Padmasree_Warrior\" title=\"Padmasree Warrior\">Padmasree Warrior</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Senior leadership team</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Satya_Nadella\" title=\"Satya Nadella\">Satya Nadella</a> (CEO)</li>\n<li><a href=\"/wiki/Chris_Capossela\" title=\"Chris Capossela\">Chris Capossela</a> (CMO)</li>\n<li><a href=\"/wiki/Scott_Guthrie\" title=\"Scott Guthrie\">Scott Guthrie</a></li>\n<li><a href=\"/wiki/Amy_Hood\" title=\"Amy Hood\">Amy Hood</a> (CFO)</li>\n<li><a href=\"/wiki/Kevin_Scott_(computer_scientist)\" title=\"Kevin Scott (computer scientist)\">Kevin Scott</a> (CTO)</li>\n<li><a href=\"/wiki/Brad_Smith_(American_lawyer)\" title=\"Brad Smith (American lawyer)\">Brad Smith</a> (CLO)</li>\n<li><a href=\"/wiki/Harry_Shum\" title=\"Harry Shum\">Harry Shum</a></li>\n<li><a href=\"/wiki/Phil_Spencer_(business_executive)\" title=\"Phil Spencer (business executive)\">Phil Spencer</a></li>\n<li><a href=\"/wiki/Kathleen_Hogan\" title=\"Kathleen Hogan\">Kathleen Hogan</a> (CPO)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Corporate VPs</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Joe_Belfiore\" title=\"Joe Belfiore\">Joe Belfiore</a></li>\n<li><a href=\"/wiki/Richard_Rashid\" title=\"Richard Rashid\">Richard Rashid</a> (SVP)</li>\n<li><a href=\"/wiki/C%C3%A9sar_Cernuda\" title=\"César Cernuda\">César Cernuda</a></li>\n<li><a href=\"/wiki/Panos_Panay_(Microsoft)\" class=\"mw-redirect\" title=\"Panos Panay (Microsoft)\">Panos Panay</a> (CVP)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Employee groups</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Global_LGBTQIA%2B_Employee_%26_Allies_at_Microsoft\" title=\"Global LGBTQIA+ Employee &amp; Allies at Microsoft\">Global LGBTQIA+ Employee &amp; Allies at Microsoft</a></li>\n<li><a href=\"/wiki/Microsoft_and_unions\" title=\"Microsoft and unions\">Microsoft and unions</a></li></ul>\n</div></td></tr></tbody></table><div></div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Products</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\"></div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Microsoft_hardware\" title=\"Microsoft hardware\">Hardware</a></th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Azure_Kinect\" title=\"Azure Kinect\">Azure Kinect</a></li>\n<li><a href=\"/wiki/Microsoft_HoloLens\" title=\"Microsoft HoloLens\">HoloLens</a></li>\n<li><a href=\"/wiki/LifeCam\" title=\"LifeCam\">LifeCam</a></li>\n<li><a href=\"/wiki/Microsoft_Surface\" title=\"Microsoft Surface\">Surface</a>\n<ul><li><a href=\"/wiki/Surface_Hub\" title=\"Surface Hub\">Hub</a></li>\n<li><a href=\"/wiki/Surface_Go\" title=\"Surface Go\">Go</a></li>\n<li><a href=\"/wiki/Surface_Laptop\" title=\"Surface Laptop\">Laptop</a></li>\n<li><a href=\"/wiki/Surface_Laptop_Go\" title=\"Surface Laptop Go\">Laptop Go</a></li>\n<li><a href=\"/wiki/Surface_Pro\" title=\"Surface Pro\">Pro</a></li>\n<li><a href=\"/wiki/Surface_Studio\" title=\"Surface Studio\">Studio</a></li>\n<li><a href=\"/wiki/Surface_Duo\" title=\"Surface Duo\">Duo</a></li>\n<li><a href=\"/wiki/Surface_Neo\" title=\"Surface Neo\">Neo</a></li></ul></li>\n<li><a href=\"/wiki/Xbox\" title=\"Xbox\">Xbox</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/List_of_Microsoft_software\" title=\"List of Microsoft software\">Software</a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Microsoft_365\" title=\"Microsoft 365\">365</a></li>\n<li><a href=\"/wiki/Clipchamp\" title=\"Clipchamp\">Clipchamp</a></li>\n<li><a href=\"/wiki/Microsoft_Dynamics\" class=\"mw-redirect\" title=\"Microsoft Dynamics\">Dynamics</a></li>\n<li><a href=\"/wiki/Havok_(software)\" title=\"Havok (software)\">Havok</a></li>\n<li><a href=\"/wiki/Microsoft_and_open_source\" title=\"Microsoft and open source\">Open source software</a></li>\n<li><a href=\"/wiki/Microsoft_Office\" title=\"Microsoft Office\">Office</a></li>\n<li><a href=\"/wiki/Microsoft_Power_Platform\" title=\"Microsoft Power Platform\">Power Platform</a></li>\n<li><a href=\"/wiki/Microsoft_Servers\" title=\"Microsoft Servers\">Servers</a></li>\n<li><a href=\"/wiki/Microsoft_Start\" title=\"Microsoft Start\">Start</a></li>\n<li><a href=\"/wiki/Tay_(chatbot)\" title=\"Tay (chatbot)\">Tay</a></li>\n<li><a href=\"/wiki/Microsoft_Visual_Studio\" class=\"mw-redirect\" title=\"Microsoft Visual Studio\">Visual Studio</a></li>\n<li><a href=\"/wiki/Visual_Studio_Code\" title=\"Visual Studio Code\">Visual Studio Code</a></li>\n<li><a href=\"/wiki/Microsoft_Windows\" title=\"Microsoft Windows\">Windows</a></li>\n<li><a href=\"/wiki/Xbox_system_software\" title=\"Xbox system software\">Xbox OS</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Programming <br />languages</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/BASIC\" title=\"BASIC\">BASIC</a>\n<ul><li><a href=\"/wiki/Visual_Basic_.NET\" class=\"mw-redirect\" title=\"Visual Basic .NET\">VB.NET</a></li>\n<li><a href=\"/wiki/Visual_Basic_for_Applications\" title=\"Visual Basic for Applications\">VBA</a></li>\n<li><a href=\"/wiki/VBScript\" title=\"VBScript\">VBScript</a></li>\n<li><a href=\"/wiki/Visual_Basic_(classic)\" title=\"Visual Basic (classic)\">Visual Basic</a></li></ul></li>\n<li><a href=\"/wiki/C_Sharp_(programming_language)\" title=\"C Sharp (programming language)\">C#</a></li>\n<li><a href=\"/wiki/C/AL\" title=\"C/AL\">C/AL a.k.a Navision Attain</a></li>\n<li><a href=\"/wiki/F_Sharp_(programming_language)\" title=\"F Sharp (programming language)\">F#</a></li>\n<li><a href=\"/wiki/Microsoft_Visual_Programming_Language\" title=\"Microsoft Visual Programming Language\">MVPL</a></li>\n<li><a href=\"/wiki/Microsoft_Power_Fx\" title=\"Microsoft Power Fx\">Power Fx</a></li>\n<li><a href=\"/wiki/PowerShell\" title=\"PowerShell\">PowerShell</a></li>\n<li><a href=\"/wiki/Transact-SQL\" title=\"Transact-SQL\">Transact-SQL</a></li>\n<li><a href=\"/wiki/TypeScript\" title=\"TypeScript\">TypeScript</a></li>\n<li><a href=\"/wiki/Q_Sharp\" title=\"Q Sharp\">Q#</a></li>\n<li><i><a href=\"/wiki/Visual_J_Sharp\" title=\"Visual J Sharp\">Visual J#</a></i></li>\n<li><i><a href=\"/wiki/Visual_J%2B%2B\" title=\"Visual J++\">Visual J++</a></i></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Web properties</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Azure</a></li>\n<li><a href=\"/wiki/Microsoft_Bing\" title=\"Microsoft Bing\">Bing</a></li>\n<li><a href=\"/wiki/Microsoft_Learn\" title=\"Microsoft Learn\">Microsoft Learn</a>\n<ul><li><a href=\"/wiki/Channel_9_(Microsoft)\" title=\"Channel 9 (Microsoft)\">Channel 9</a></li>\n<li><a href=\"/wiki/Microsoft_Developer_Network\" title=\"Microsoft Developer Network\">Developer Network</a></li>\n<li><a href=\"/wiki/Microsoft_TechNet\" title=\"Microsoft TechNet\">TechNet</a></li></ul></li>\n<li><a href=\"/wiki/GitHub\" title=\"GitHub\">GitHub</a></li>\n<li><a href=\"/wiki/LinkedIn\" title=\"LinkedIn\">LinkedIn</a>\n<ul><li><a href=\"/wiki/LinkedIn_Learning\" title=\"LinkedIn Learning\">LinkedIn Learning</a></li></ul></li>\n<li><a href=\"/wiki/MSN\" title=\"MSN\">MSN</a></li>\n<li><a href=\"/wiki/Outlook.com\" title=\"Outlook.com\">Outlook.com</a></li>\n<li><a href=\"/wiki/Microsoft_Store\" title=\"Microsoft Store\">Store</a></li>\n<li><a href=\"/wiki/Microsoft_Translator\" title=\"Microsoft Translator\">Translator</a></li></ul>\n</div></td></tr></tbody></table><div></div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Company</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\"></div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Conferences</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Microsoft_Build\" title=\"Microsoft Build\">Build</a></li>\n<li><a href=\"/wiki/Microsoft_Ignite\" title=\"Microsoft Ignite\">Ignite</a></li>\n<li><a href=\"/wiki/Microsoft_Inspire\" title=\"Microsoft Inspire\">Inspire</a></li>\n<li><a href=\"/wiki/MIX_(Microsoft)\" title=\"MIX (Microsoft)\">MIX</a></li>\n<li><a href=\"/wiki/Professional_Developers_Conference\" title=\"Professional Developers Conference\">PDC</a></li>\n<li><a href=\"/wiki/Windows_Hardware_Engineering_Conference\" title=\"Windows Hardware Engineering Conference\">WinHEC</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Divisions</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Microsoft_engineering_groups\" title=\"Microsoft engineering groups\">Engineering groups</a>\n<ul><li><a href=\"/wiki/Microsoft_Mobile\" title=\"Microsoft Mobile\">Mobile</a></li>\n<li><a href=\"/wiki/Skype_Technologies\" title=\"Skype Technologies\">Skype unit</a></li></ul></li>\n<li><a href=\"/wiki/Microsoft_Digital_Crimes_Unit\" title=\"Microsoft Digital Crimes Unit\">Digital Crimes Unit</a></li>\n<li><a href=\"/wiki/Microsoft_Garage\" title=\"Microsoft Garage\">Garage</a></li>\n<li><a href=\"/wiki/Microsoft_Press\" title=\"Microsoft Press\">Press</a></li>\n<li><a href=\"/wiki/Microsoft_Research\" title=\"Microsoft Research\">Research</a></li>\n<li><a href=\"/wiki/Microsoft_Store_(retail)\" title=\"Microsoft Store (retail)\">Retail stores</a></li>\n<li><a href=\"/wiki/.NET_Foundation\" title=\".NET Foundation\">.NET Foundation</a></li>\n<li><a href=\"/wiki/Outercurve_Foundation\" title=\"Outercurve Foundation\">Outercurve Foundation</a></li>\n<li><a href=\"/wiki/Microsoft_Gaming\" title=\"Microsoft Gaming\">Gaming</a>\n<ul><li><a href=\"/wiki/Xbox_Game_Studios\" title=\"Xbox Game Studios\">Xbox Game Studios</a></li>\n<li><a href=\"/wiki/ZeniMax_Media\" title=\"ZeniMax Media\">ZeniMax Media</a></li>\n<li><a href=\"/wiki/Activision_Blizzard\" title=\"Activision Blizzard\">Activision Blizzard</a></li></ul></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Estates</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Microsoft_campus\" title=\"Microsoft campus\">Microsoft campus</a></li>\n<li><a href=\"/wiki/Microsoft_Egypt\" title=\"Microsoft Egypt\">Microsoft Egypt</a></li>\n<li><a href=\"/wiki/Microsoft_India\" title=\"Microsoft India\">Microsoft India</a></li>\n<li><a href=\"/wiki/Microsoft_Japan\" title=\"Microsoft Japan\">Microsoft Japan</a></li></ul>\n</div></td></tr></tbody></table><div></div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Campaigns</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><i><a href=\"/wiki/Where_do_you_want_to_go_today%3F\" title=\"Where do you want to go today?\">Where do you want to go today?</a></i> (1994)</li>\n<li><i><a href=\"/wiki/Champagne_(advertisement)\" title=\"Champagne (advertisement)\">Champagne</a></i> (2002)</li>\n<li><i><a href=\"/wiki/Mojave_Experiment\" title=\"Mojave Experiment\">Mojave Experiment</a></i> (2006)</li>\n<li><i><a href=\"/wiki/I%27m_a_PC\" title=\"I&#39;m a PC\">I'm a PC</a></i> (2008)</li>\n<li><i><a href=\"/wiki/Scroogled\" title=\"Scroogled\">Scroogled</a></i> (2012)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Criticism_of_Microsoft\" title=\"Criticism of Microsoft\">Criticism</a></th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Bundling_of_Microsoft_Windows\" title=\"Bundling of Microsoft Windows\">Bundling of Microsoft Windows</a></li>\n<li><a href=\"/wiki/Office_Assistant\" title=\"Office Assistant\">Clippy</a></li>\n<li><a href=\"/wiki/ILoo#Reaction\" title=\"ILoo\">iLoo</a></li>\n<li><a href=\"/wiki/Internet_Explorer#Security_vulnerabilities\" title=\"Internet Explorer\">Internet Explorer</a></li>\n<li><a href=\"/wiki/Microsoft_Bob\" title=\"Microsoft Bob\">Microsoft Bob</a></li>\n<li><a href=\"/wiki/NSAKEY\" title=\"NSAKEY\">_NSAKEY</a></li>\n<li><a href=\"/wiki/Criticism_of_Microsoft_Windows\" title=\"Criticism of Microsoft Windows\">Windows</a>\n<ul><li><a href=\"/wiki/Criticism_of_Windows_XP\" title=\"Criticism of Windows XP\">XP</a></li>\n<li><a href=\"/wiki/Criticism_of_Windows_Vista\" title=\"Criticism of Windows Vista\">Vista</a></li>\n<li><a href=\"/wiki/Criticism_of_Windows_10\" title=\"Criticism of Windows 10\">10</a></li></ul></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Microsoft_litigation\" title=\"Microsoft litigation\">Litigation</a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><i><a href=\"/wiki/Alcatel-Lucent_v._Microsoft_Corp.\" title=\"Alcatel-Lucent v. Microsoft Corp.\">Alcatel-Lucent v. Microsoft</a></i></li>\n<li><i><a href=\"/wiki/Apple_Computer,_Inc._v._Microsoft_Corp.\" title=\"Apple Computer, Inc. v. Microsoft Corp.\">Apple v. Microsoft</a></i></li>\n<li><i><a href=\"/wiki/Microsoft_Corp._v._Commission\" title=\"Microsoft Corp. v. Commission\">Microsoft v. Commission</a></i></li>\n<li><i><a href=\"/wiki/FTC_v._Microsoft\" title=\"FTC v. Microsoft\">FTC v. Microsoft</a></i></li>\n<li><i><a href=\"/wiki/Microsoft_Corp._v._Lindows.com,_Inc.\" title=\"Microsoft Corp. v. Lindows.com, Inc.\">Microsoft v. Lindows</a></i></li>\n<li><i><a href=\"/wiki/Microsoft_v._MikeRoweSoft\" title=\"Microsoft v. MikeRoweSoft\">Microsoft v. MikeRoweSoft</a></i></li>\n<li><i><a href=\"/wiki/Microsoft_Corp._v._Shah\" title=\"Microsoft Corp. v. Shah\">Microsoft v. Shah</a></i></li>\n<li><i><a href=\"/wiki/United_States_v._Microsoft_Corp.\" title=\"United States v. Microsoft Corp.\">United States v. Microsoft</a></i> (2001 antitrust case)</li>\n<li><i><a href=\"/wiki/Microsoft_Corp._v._United_States\" title=\"Microsoft Corp. v. United States\">Microsoft v. United States</a></i> (2018 data privacy case)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/List_of_mergers_and_acquisitions_by_Microsoft\" title=\"List of mergers and acquisitions by Microsoft\">Acquisitions</a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\"></div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th id=\"Completed\" scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Completed</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Wunderlist\" title=\"Wunderlist\">6Wunderkinder</a></li>\n<li><a href=\"/wiki/Access_Software\" title=\"Access Software\">Access Software</a></li>\n<li><a href=\"/wiki/Acompli\" title=\"Acompli\">Acompli</a></li>\n<li><a href=\"/wiki/Activision_Blizzard\" title=\"Activision Blizzard\">Activision Blizzard</a>\n<ul><li><a href=\"/wiki/Acquisition_of_Activision_Blizzard_by_Microsoft\" title=\"Acquisition of Activision Blizzard by Microsoft\">acquisition</a></li></ul></li>\n<li><a href=\"/wiki/Altamira_Software\" title=\"Altamira Software\">Altamira Software</a></li>\n<li><a href=\"/wiki/AltspaceVR\" title=\"AltspaceVR\">AltspaceVR</a></li>\n<li><a href=\"/wiki/AQuantive\" title=\"AQuantive\">aQuantive</a></li>\n<li><a href=\"/wiki/Microsoft_Amalga\" title=\"Microsoft Amalga\">Azyxxi</a></li>\n<li><a href=\"/wiki/The_Blue_Ribbon_SoundWorks\" title=\"The Blue Ribbon SoundWorks\">The Blue Ribbon SoundWorks</a></li>\n<li><a href=\"/wiki/Mixer_(website)\" class=\"mw-redirect\" title=\"Mixer (website)\">Beam</a></li>\n<li><a href=\"/wiki/Bungie\" title=\"Bungie\">Bungie</a></li>\n<li><a href=\"/wiki/Calista_Technologies\" title=\"Calista Technologies\">Calista Technologies</a></li>\n<li><a href=\"/wiki/Clipchamp\" title=\"Clipchamp\">Clipchamp</a></li>\n<li><a href=\"/wiki/Colloquis\" title=\"Colloquis\">Colloquis</a></li>\n<li><a href=\"/wiki/Compulsion_Games\" title=\"Compulsion Games\">Compulsion Games</a></li>\n<li><a href=\"/wiki/Connectix\" title=\"Connectix\">Connectix</a></li>\n<li><a href=\"/wiki/Consumers_Software\" title=\"Consumers Software\">Consumers Software</a></li>\n<li><a href=\"/wiki/Danger_Inc.\" class=\"mw-redirect\" title=\"Danger Inc.\">Danger</a></li>\n<li><a href=\"/wiki/Double_Fine_Productions\" class=\"mw-redirect\" title=\"Double Fine Productions\">Double Fine Productions</a></li>\n<li><a href=\"/wiki/MSN_Travel\" title=\"MSN Travel\">Farecast</a></li>\n<li><a href=\"/wiki/FASA_Studio\" title=\"FASA Studio\">FASA Studio</a></li>\n<li><a href=\"/wiki/Microsoft_Development_Center_Norway\" title=\"Microsoft Development Center Norway\">Fast Search &amp; Transfer</a></li>\n<li><a href=\"/wiki/Firefly_(website)\" title=\"Firefly (website)\">Firefly</a></li>\n<li><a href=\"/wiki/Forethought,_Inc.\" title=\"Forethought, Inc.\">Forethought</a></li>\n<li><a href=\"/wiki/Windows_Defender\" class=\"mw-redirect\" title=\"Windows Defender\">GIANT Company Software</a></li>\n<li><a href=\"/wiki/GitHub\" title=\"GitHub\">GitHub</a></li>\n<li><a href=\"/wiki/GreenButton\" title=\"GreenButton\">GreenButton</a></li>\n<li><a href=\"/wiki/Groove_Networks\" title=\"Groove Networks\">Groove Networks</a></li>\n<li><a href=\"/wiki/Havok_(company)\" title=\"Havok (company)\">Havok Group</a></li>\n<li><i><a href=\"/wiki/High_Heat_Major_League_Baseball\" title=\"High Heat Major League Baseball\">High Heat Major League Baseball</a></i></li>\n<li><a href=\"/wiki/Outlook.com\" title=\"Outlook.com\">Hotmail</a></li>\n<li><a href=\"/wiki/InXile_Entertainment\" title=\"InXile Entertainment\">inXile Entertainment</a></li>\n<li><a href=\"/wiki/Jellyfish.com\" title=\"Jellyfish.com\">Jellyfish.com</a></li>\n<li><a href=\"/wiki/LinkedIn\" title=\"LinkedIn\">LinkedIn</a></li>\n<li><a href=\"/wiki/LinkExchange\" title=\"LinkExchange\">LinkExchange</a></li>\n<li><a href=\"/wiki/Lionhead_Studios\" title=\"Lionhead Studios\">Lionhead Studios</a></li>\n<li><a href=\"/wiki/Maluuba\" title=\"Maluuba\">Maluuba</a></li>\n<li><a href=\"/wiki/Massive_Incorporated\" title=\"Massive Incorporated\">Massive Incorporated</a></li>\n<li><a href=\"/wiki/Metaswitch\" title=\"Metaswitch\">Metaswitch</a></li>\n<li><a href=\"/wiki/MileIQ\" title=\"MileIQ\">Mobile Data Labs</a></li>\n<li><a href=\"/wiki/Mojang_Studios\" title=\"Mojang Studios\">Mojang Studios</a></li>\n<li><a href=\"/wiki/Ninja_Theory\" title=\"Ninja Theory\">Ninja Theory</a></li>\n<li><a href=\"/wiki/Microsoft_Mobile\" title=\"Microsoft Mobile\">Nokia Devices and Services</a></li>\n<li><a href=\"/wiki/Npm,_Inc.\" title=\"Npm, Inc.\">npm</a></li>\n<li><a href=\"/wiki/Nuance_Communications\" title=\"Nuance Communications\">Nuance Communications</a></li>\n<li><a href=\"/wiki/Obsidian_Entertainment\" title=\"Obsidian Entertainment\">Obsidian Entertainment</a></li>\n<li><a href=\"/wiki/Windows_Live_Toolbar#Onfolio\" title=\"Windows Live Toolbar\">Onfolio</a></li>\n<li><a href=\"/wiki/Pando_Networks\" title=\"Pando Networks\">Pando Networks</a></li>\n<li><a href=\"/wiki/Perceptive_Pixel\" title=\"Perceptive Pixel\">Perceptive Pixel</a></li>\n<li><a href=\"/wiki/Playground_Games\" title=\"Playground Games\">Playground Games</a></li>\n<li><a href=\"/wiki/PlaceWare\" title=\"PlaceWare\">PlaceWare</a></li>\n<li><a href=\"/wiki/Powerset_(company)\" title=\"Powerset (company)\">Powerset</a></li>\n<li><a href=\"/wiki/Press_Play_(company)\" title=\"Press Play (company)\">Press Play</a></li>\n<li><a href=\"/wiki/ProClarity\" title=\"ProClarity\">ProClarity</a></li>\n<li><a href=\"/wiki/Rare_(company)\" title=\"Rare (company)\">Rare</a></li>\n<li><a href=\"/wiki/Revolution_Analytics\" title=\"Revolution Analytics\">Revolution Analytics</a></li>\n<li><a href=\"/wiki/RiskIQ\" title=\"RiskIQ\">RiskIQ</a></li>\n<li><a href=\"/wiki/ScreenTonic\" class=\"mw-redirect\" title=\"ScreenTonic\">ScreenTonic</a></li>\n<li><a href=\"/wiki/Secure_Islands\" title=\"Secure Islands\">Secure Islands</a></li>\n<li><a href=\"/wiki/Simplygon\" title=\"Simplygon\">Simplygon</a></li>\n<li><a href=\"/wiki/Skype_Technologies\" title=\"Skype Technologies\">Skype</a></li>\n<li><a href=\"/wiki/Sunrise_Calendar\" title=\"Sunrise Calendar\">Sunrise Atelier</a></li>\n<li><a href=\"/wiki/Microsoft_SwiftKey\" title=\"Microsoft SwiftKey\">SwiftKey</a></li>\n<li><a href=\"/wiki/Sysinternals\" title=\"Sysinternals\">Winternals Software</a></li>\n<li><a href=\"/wiki/Teleo\" title=\"Teleo\">Teleo</a></li>\n<li><a href=\"/wiki/Tellme_Networks\" title=\"Tellme Networks\">Tellme Networks</a></li>\n<li><a href=\"/wiki/Twisted_Pixel_Games\" title=\"Twisted Pixel Games\">Twisted Pixel Games</a></li>\n<li><a href=\"/wiki/Undead_Labs\" title=\"Undead Labs\">Undead Labs</a></li>\n<li><a href=\"/wiki/Vermeer_Technologies\" title=\"Vermeer Technologies\">Vermeer Technologies</a></li>\n<li><a href=\"/wiki/Visio_Corporation\" title=\"Visio Corporation\">Visio Corporation</a></li>\n<li><a href=\"/wiki/Flux_(graphics_software)\" title=\"Flux (graphics software)\">Vivaty</a></li>\n<li><a href=\"/wiki/VoloMetrix\" title=\"VoloMetrix\">VoloMetrix</a></li>\n<li><a href=\"/wiki/NetShow\" title=\"NetShow\">VXtreme</a></li>\n<li><a href=\"/wiki/MSN_TV\" title=\"MSN TV\">WebTV Networks</a></li>\n<li><a href=\"/wiki/Xamarin\" title=\"Xamarin\">Xamarin</a></li>\n<li><a href=\"/wiki/Xandr\" title=\"Xandr\">Xandr</a>\n<ul><li><a href=\"/wiki/AppNexus\" title=\"AppNexus\">AppNexus</a></li></ul></li>\n<li><a href=\"/wiki/Yammer\" class=\"mw-redirect\" title=\"Yammer\">Yammer</a></li>\n<li><a href=\"/wiki/Yupi\" title=\"Yupi\">Yupi</a></li>\n<li><a href=\"/wiki/ZeniMax_Media\" title=\"ZeniMax Media\">ZeniMax Media</a></li></ul>\n</div></td></tr></tbody></table><div></div></td></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>\n<ul><li><span class=\"noviewer\" typeof=\"mw:File\"><span title=\"Category\"><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png\" decoding=\"async\" width=\"16\" height=\"16\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x\" data-file-width=\"180\" data-file-height=\"185\" /></span></span> <a href=\"/wiki/Category:Microsoft\" title=\"Category:Microsoft\">Category</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Links_to_related_articles\" style=\"padding:3px\"><table class=\"nowraplinks mw-collapsible mw-collapsed navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\" style=\"background:#e8e8ff;\"><div id=\"Links_to_related_articles\" style=\"font-size:114%;margin:0 4em\">Links to related articles</div></th></tr><tr><td colspan=\"2\" class=\"navbox-list navbox-odd\" style=\"width:100%;padding:0;font-size:114%\"><div style=\"padding:0px\">\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Components_of_the_Dow_Jones_Industrial_Average\" style=\"padding:3px\"><table class=\"nowraplinks mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Dow_Jones_Industrial_Average_companies\" title=\"Template:Dow Jones Industrial Average companies\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Dow_Jones_Industrial_Average_companies\" title=\"Template talk:Dow Jones Industrial Average companies\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Dow_Jones_Industrial_Average_companies\" title=\"Special:EditPage/Template:Dow Jones Industrial Average companies\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Components_of_the_Dow_Jones_Industrial_Average\" style=\"font-size:114%;margin:0 4em\">Components of the <a href=\"/wiki/Dow_Jones_Industrial_Average\" title=\"Dow Jones Industrial Average\">Dow Jones Industrial Average</a></div></th></tr><tr><td colspan=\"2\" class=\"navbox-list navbox-odd hlist\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/3M\" title=\"3M\">3M</a></li>\n<li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon</a></li>\n<li><a href=\"/wiki/American_Express\" title=\"American Express\">American Express</a></li>\n<li><a href=\"/wiki/Amgen\" title=\"Amgen\">Amgen</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Boeing\" title=\"Boeing\">Boeing</a></li>\n<li><a href=\"/wiki/Caterpillar_Inc.\" title=\"Caterpillar Inc.\">Caterpillar</a></li>\n<li><a href=\"/wiki/Chevron_Corporation\" title=\"Chevron Corporation\">Chevron</a></li>\n<li><a href=\"/wiki/Cisco\" title=\"Cisco\">Cisco</a></li>\n<li><a href=\"/wiki/The_Coca-Cola_Company\" title=\"The Coca-Cola Company\">Coca-Cola</a></li>\n<li><a href=\"/wiki/The_Walt_Disney_Company\" title=\"The Walt Disney Company\">Disney</a></li>\n<li><a href=\"/wiki/Dow_Chemical_Company\" title=\"Dow Chemical Company\">Dow</a></li>\n<li><a href=\"/wiki/Goldman_Sachs\" title=\"Goldman Sachs\">Goldman Sachs</a></li>\n<li><a href=\"/wiki/The_Home_Depot\" title=\"The Home Depot\">Home Depot</a></li>\n<li><a href=\"/wiki/Honeywell\" title=\"Honeywell\">Honeywell</a></li>\n<li><a href=\"/wiki/IBM\" title=\"IBM\">IBM</a></li>\n<li><a href=\"/wiki/Intel\" title=\"Intel\">Intel</a></li>\n<li><a href=\"/wiki/Johnson_%26_Johnson\" title=\"Johnson &amp; Johnson\">Johnson &amp; Johnson</a></li>\n<li><a href=\"/wiki/JPMorgan_Chase\" title=\"JPMorgan Chase\">JPMorgan Chase</a></li>\n<li><a href=\"/wiki/McDonald%27s\" title=\"McDonald&#39;s\">McDonald's</a></li>\n<li><a href=\"/wiki/Merck_%26_Co.\" title=\"Merck &amp; Co.\">Merck</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Nike,_Inc.\" title=\"Nike, Inc.\">Nike</a></li>\n<li><a href=\"/wiki/Procter_%26_Gamble\" title=\"Procter &amp; Gamble\">Procter &amp; Gamble</a></li>\n<li><a href=\"/wiki/Salesforce\" title=\"Salesforce\">Salesforce</a></li>\n<li><a href=\"/wiki/The_Travelers_Companies\" title=\"The Travelers Companies\">Travelers</a></li>\n<li><a href=\"/wiki/UnitedHealth_Group\" title=\"UnitedHealth Group\">UnitedHealth</a></li>\n<li><a href=\"/wiki/Verizon\" title=\"Verizon\">Verizon</a></li>\n<li><a href=\"/wiki/Visa_Inc.\" title=\"Visa Inc.\">Visa</a></li>\n<li><a href=\"/wiki/Walmart\" title=\"Walmart\">Walmart</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Companies_of_the_Nasdaq-100_index\" style=\"padding:3px\"><table class=\"nowraplinks mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Nasdaq-100\" title=\"Template:Nasdaq-100\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Nasdaq-100\" title=\"Template talk:Nasdaq-100\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Nasdaq-100\" title=\"Special:EditPage/Template:Nasdaq-100\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Companies_of_the_Nasdaq-100_index\" style=\"font-size:114%;margin:0 4em\">Companies of the <a href=\"/wiki/Nasdaq-100\" title=\"Nasdaq-100\">Nasdaq-100</a> index</div></th></tr><tr><td colspan=\"2\" class=\"navbox-list navbox-odd hlist\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Adobe_Inc.\" title=\"Adobe Inc.\">Adobe</a></li>\n<li><a href=\"/wiki/ADP,_Inc.\" class=\"mw-redirect\" title=\"ADP, Inc.\">ADP</a></li>\n<li><a href=\"/wiki/AMD\" title=\"AMD\">AMD</a></li>\n<li><a href=\"/wiki/Airbnb\" title=\"Airbnb\">Airbnb</a></li>\n<li><a href=\"/wiki/Alphabet_Inc.\" title=\"Alphabet Inc.\">Alphabet</a></li>\n<li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon</a></li>\n<li><a href=\"/wiki/American_Electric_Power\" title=\"American Electric Power\">AEP</a></li>\n<li><a href=\"/wiki/Amgen\" title=\"Amgen\">Amgen</a></li>\n<li><a href=\"/wiki/Analog_Devices\" title=\"Analog Devices\">Analog Devices</a></li>\n<li><a href=\"/wiki/Ansys\" title=\"Ansys\">Ansys</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Applied_Materials\" title=\"Applied Materials\">Applied Materials</a></li>\n<li><a href=\"/wiki/ASML_Holding\" title=\"ASML Holding\">ASML</a></li>\n<li><a href=\"/wiki/AstraZeneca\" title=\"AstraZeneca\">AstraZeneca</a></li>\n<li><a href=\"/wiki/Atlassian\" title=\"Atlassian\">Atlassian</a></li>\n<li><a href=\"/wiki/Autodesk\" title=\"Autodesk\">Autodesk</a></li>\n<li><a href=\"/wiki/Baker_Hughes\" title=\"Baker Hughes\">Baker Hughes</a></li>\n<li><a href=\"/wiki/Biogen\" title=\"Biogen\">Biogen</a></li>\n<li><a href=\"/wiki/Booking_Holdings\" title=\"Booking Holdings\">Booking Holdings</a></li>\n<li><a href=\"/wiki/Broadcom\" title=\"Broadcom\">Broadcom</a></li>\n<li><a href=\"/wiki/Cadence_Design_Systems\" title=\"Cadence Design Systems\">Cadence</a></li>\n<li><a href=\"/wiki/CDW\" title=\"CDW\">CDW</a></li>\n<li><a href=\"/wiki/Charter_Communications\" title=\"Charter Communications\">Charter Communications</a></li>\n<li><a href=\"/wiki/Cintas\" title=\"Cintas\">Cintas</a></li>\n<li><a href=\"/wiki/Cisco\" title=\"Cisco\">Cisco</a></li>\n<li><a href=\"/wiki/Coca-Cola_Europacific_Partners\" title=\"Coca-Cola Europacific Partners\">Coca-Cola Europacific Partners</a></li>\n<li><a href=\"/wiki/Cognizant\" title=\"Cognizant\">Cognizant</a></li>\n<li><a href=\"/wiki/Comcast\" title=\"Comcast\">Comcast</a></li>\n<li><a href=\"/wiki/Constellation_Energy\" title=\"Constellation Energy\">Constellation Energy</a></li>\n<li><a href=\"/wiki/Copart\" title=\"Copart\">Copart</a></li>\n<li><a href=\"/wiki/CoStar_Group\" title=\"CoStar Group\">CoStar</a></li>\n<li><a href=\"/wiki/Costco\" title=\"Costco\">Costco</a></li>\n<li><a href=\"/wiki/CrowdStrike\" title=\"CrowdStrike\">CrowdStrike</a></li>\n<li><a href=\"/wiki/CSX_Corporation\" title=\"CSX Corporation\">CSX</a></li>\n<li><a href=\"/wiki/Datadog\" title=\"Datadog\">Datadog</a></li>\n<li><a href=\"/wiki/Dexcom\" title=\"Dexcom\">Dexcom</a></li>\n<li><a href=\"/wiki/Diamondback_Energy\" title=\"Diamondback Energy\">Diamondback Energy</a></li>\n<li><a href=\"/wiki/Dollar_Tree\" title=\"Dollar Tree\">Dollar Tree</a></li>\n<li><a href=\"/wiki/DoorDash\" title=\"DoorDash\">DoorDash</a></li>\n<li><a href=\"/wiki/Electronic_Arts\" title=\"Electronic Arts\">Electronic Arts</a></li>\n<li><a href=\"/wiki/Exelon\" title=\"Exelon\">Exelon</a></li>\n<li><a href=\"/wiki/Fastenal\" title=\"Fastenal\">Fastenal</a></li>\n<li><a href=\"/wiki/Fortinet\" title=\"Fortinet\">Fortinet</a></li>\n<li><a href=\"/wiki/GE_HealthCare\" title=\"GE HealthCare\">GE HealthCare</a></li>\n<li><a href=\"/wiki/Gilead_Sciences\" title=\"Gilead Sciences\">Gilead</a></li>\n<li><a href=\"/wiki/GlobalFoundries\" title=\"GlobalFoundries\">GlobalFoundries</a></li>\n<li><a href=\"/wiki/Honeywell\" title=\"Honeywell\">Honeywell</a></li>\n<li><a href=\"/wiki/Idexx_Laboratories\" title=\"Idexx Laboratories\">Idexx Laboratories</a></li>\n<li><a href=\"/wiki/Illumina,_Inc.\" title=\"Illumina, Inc.\">Illumina</a></li>\n<li><a href=\"/wiki/Intel\" title=\"Intel\">Intel</a></li>\n<li><a href=\"/wiki/Intuit\" title=\"Intuit\">Intuit</a></li>\n<li><a href=\"/wiki/Intuitive_Surgical\" title=\"Intuitive Surgical\">Intuitive Surgical</a></li>\n<li><a href=\"/wiki/Keurig_Dr_Pepper\" title=\"Keurig Dr Pepper\">Keurig Dr Pepper</a></li>\n<li><a href=\"/wiki/KLA_Corporation\" title=\"KLA Corporation\">KLA</a></li>\n<li><a href=\"/wiki/Kraft_Heinz\" title=\"Kraft Heinz\">Kraft Heinz</a></li>\n<li><a href=\"/wiki/Lam_Research\" title=\"Lam Research\">Lam Research</a></li>\n<li><a href=\"/wiki/Lululemon_Athletica\" title=\"Lululemon Athletica\">Lululemon</a></li>\n<li><a href=\"/wiki/Marriott_International\" title=\"Marriott International\">Marriott International</a></li>\n<li><a href=\"/wiki/Marvell_Technology\" title=\"Marvell Technology\">Marvell</a></li>\n<li><a href=\"/wiki/Mercado_Libre\" title=\"Mercado Libre\">Mercado Libre</a></li>\n<li><a href=\"/wiki/Meta_Platforms\" title=\"Meta Platforms\">Meta</a></li>\n<li><a href=\"/wiki/Microchip_Technology\" title=\"Microchip Technology\">Microchip</a></li>\n<li><a href=\"/wiki/Micron_Technology\" title=\"Micron Technology\">Micron</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Moderna\" title=\"Moderna\">Moderna</a></li>\n<li><a href=\"/wiki/Mondelez_International\" title=\"Mondelez International\">Mondelez International</a></li>\n<li><a href=\"/wiki/MongoDB_Inc.\" title=\"MongoDB Inc.\">MongoDB</a></li>\n<li><a href=\"/wiki/Monster_Beverage\" title=\"Monster Beverage\">Monster Beverage</a></li>\n<li><a href=\"/wiki/Netflix,_Inc.\" title=\"Netflix, Inc.\">Netflix</a></li>\n<li><a href=\"/wiki/Nvidia\" title=\"Nvidia\">Nvidia</a></li>\n<li><a href=\"/wiki/NXP_Semiconductors\" title=\"NXP Semiconductors\">NXP</a></li>\n<li><a href=\"/wiki/O%27Reilly_Auto_Parts\" title=\"O&#39;Reilly Auto Parts\">O'Reilly Auto Parts</a></li>\n<li><a href=\"/wiki/Old_Dominion_Freight_Line\" title=\"Old Dominion Freight Line\">Old Dominion</a></li>\n<li><a href=\"/wiki/Onsemi\" title=\"Onsemi\">onsemi</a></li>\n<li><a href=\"/wiki/Paccar\" title=\"Paccar\">Paccar</a></li>\n<li><a href=\"/wiki/Palo_Alto_Networks\" title=\"Palo Alto Networks\">Palo Alto Networks</a></li>\n<li><a href=\"/wiki/Paychex\" title=\"Paychex\">Paychex</a></li>\n<li><a href=\"/wiki/PayPal\" title=\"PayPal\">PayPal</a></li>\n<li><a href=\"/wiki/Pinduoduo\" title=\"Pinduoduo\">PDD Holdings</a></li>\n<li><a href=\"/wiki/PepsiCo\" title=\"PepsiCo\">PepsiCo</a></li>\n<li><a href=\"/wiki/Qualcomm\" title=\"Qualcomm\">Qualcomm</a></li>\n<li><a href=\"/wiki/Regeneron_Pharmaceuticals\" title=\"Regeneron Pharmaceuticals\">Regeneron</a></li>\n<li><a href=\"/wiki/Roper_Technologies\" title=\"Roper Technologies\">Roper Technologies</a></li>\n<li><a href=\"/wiki/Ross_Stores\" title=\"Ross Stores\">Ross Stores</a></li>\n<li><a href=\"/wiki/Sirius_XM\" title=\"Sirius XM\">Sirius XM</a></li>\n<li><a href=\"/wiki/Splunk\" title=\"Splunk\">Splunk</a></li>\n<li><a href=\"/wiki/Starbucks\" title=\"Starbucks\">Starbucks</a></li>\n<li><a href=\"/wiki/Synopsys\" title=\"Synopsys\">Synopsys</a></li>\n<li><a href=\"/wiki/Take-Two_Interactive\" title=\"Take-Two Interactive\">Take-Two Interactive</a></li>\n<li><a href=\"/wiki/T-Mobile_US\" title=\"T-Mobile US\">T-Mobile</a></li>\n<li><a href=\"/wiki/Tesla,_Inc.\" title=\"Tesla, Inc.\">Tesla</a></li>\n<li><a href=\"/wiki/Texas_Instruments\" title=\"Texas Instruments\">Texas Instruments</a></li>\n<li><a href=\"/wiki/The_Trade_Desk\" title=\"The Trade Desk\">Trade Desk</a></li>\n<li><a href=\"/wiki/Verisk_Analytics\" title=\"Verisk Analytics\">Verisk</a></li>\n<li><a href=\"/wiki/Vertex_Pharmaceuticals\" title=\"Vertex Pharmaceuticals\">Vertex</a></li>\n<li><a href=\"/wiki/Walgreens_Boots_Alliance\" title=\"Walgreens Boots Alliance\">Walgreens Boots Alliance</a></li>\n<li><a href=\"/wiki/Warner_Bros._Discovery\" title=\"Warner Bros. Discovery\">Warner Bros. Discovery</a></li>\n<li><a href=\"/wiki/Workday,_Inc.\" title=\"Workday, Inc.\">Workday</a></li>\n<li><a href=\"/wiki/Xcel_Energy\" title=\"Xcel Energy\">Xcel Energy</a></li>\n<li><a href=\"/wiki/Zscaler\" title=\"Zscaler\">Zscaler</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Seattle-based_Corporations_(within_the_Seattle_metropolitan_area)\" style=\"padding:3px\"><table class=\"nowraplinks mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Seattle_Corporations\" title=\"Template:Seattle Corporations\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Seattle_Corporations\" title=\"Template talk:Seattle Corporations\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Seattle_Corporations\" title=\"Special:EditPage/Template:Seattle Corporations\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Seattle-based_Corporations_(within_the_Seattle_metropolitan_area)\" style=\"font-size:114%;margin:0 4em\"><a href=\"/wiki/List_of_companies_based_in_Seattle\" title=\"List of companies based in Seattle\">Seattle-based Corporations</a> (within the <a href=\"/wiki/Seattle_metropolitan_area\" title=\"Seattle metropolitan area\">Seattle metropolitan area</a>)</div></th></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Seattle\" title=\"Seattle\">Seattle</a> and <a href=\"/wiki/SeaTac,_Washington\" title=\"SeaTac, Washington\">SeaTac</a>-based <a href=\"/wiki/Fortune_1000\" title=\"Fortune 1000\">Fortune 1000</a> corporations</th><td class=\"navbox-list-with-group navbox-list navbox-odd hlist\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Alaska_Airlines\" title=\"Alaska Airlines\">Alaska Airlines</a> (#360)</li>\n<li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon.com</a> (#2)</li>\n<li><a href=\"/wiki/Expedia_Group\" title=\"Expedia Group\">Expedia Group</a> (#263)</li>\n<li><a href=\"/wiki/Expeditors_International\" title=\"Expeditors International\">Expeditors International</a> (#389)</li>\n<li><a href=\"/wiki/Nordstrom\" title=\"Nordstrom\">Nordstrom</a> (#205)</li>\n<li><a href=\"/wiki/Starbucks\" title=\"Starbucks\">Starbucks</a> (#114)</li>\n<li><a href=\"/wiki/Weyerhaeuser\" title=\"Weyerhaeuser\">Weyerhaeuser</a> (#457)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Puget_Sound_region\" title=\"Puget Sound region\">Puget Sound</a>-based <a href=\"/wiki/Fortune_1000\" title=\"Fortune 1000\">Fortune 1000</a> corporations</th><td class=\"navbox-list-with-group navbox-list navbox-even hlist\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li>Companies listed above, plus: <a href=\"/wiki/Costco\" title=\"Costco\">Costco Wholesale</a> (#14)</li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a> (#21)</li>\n<li><a href=\"/wiki/Paccar\" title=\"Paccar\">Paccar</a> (#118)</li>\n<li><a href=\"/wiki/Puget_Sound_Energy\" title=\"Puget Sound Energy\">Puget Sound Energy</a> (#710)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Major <a href=\"/wiki/Seattle\" title=\"Seattle\">Seattle</a>- and <a href=\"/wiki/Puget_Sound_region\" title=\"Puget Sound region\">Puget Sound</a>-based non-public<br /> or externally owned corporations</th><td class=\"navbox-list-with-group navbox-list navbox-odd hlist\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Big_Fish_Games\" title=\"Big Fish Games\">Big Fish Games</a></li>\n<li><a href=\"/wiki/Darigold\" title=\"Darigold\">Darigold</a></li>\n<li><a href=\"/wiki/Eddie_Bauer\" title=\"Eddie Bauer\">Eddie Bauer</a></li>\n<li><a href=\"/wiki/Jones_Soda\" title=\"Jones Soda\">Jones Soda</a></li>\n<li><a href=\"/wiki/The_Washington_Post\" title=\"The Washington Post\">Nash Holdings</a></li>\n<li><a href=\"/wiki/Nintendo\" title=\"Nintendo\">Nintendo of America</a></li>\n<li><a href=\"/wiki/QFC\" title=\"QFC\">QFC</a></li>\n<li><a href=\"/wiki/REI\" title=\"REI\">REI</a></li>\n<li><a href=\"/wiki/Safeco\" title=\"Safeco\">Safeco</a></li>\n<li><a href=\"/wiki/T-Mobile_US\" title=\"T-Mobile US\">T-Mobile US</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Electronics_industry_in_the_United_States\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Electronics_industry_in_the_United_States\" title=\"Template:Electronics industry in the United States\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Electronics_industry_in_the_United_States\" title=\"Template talk:Electronics industry in the United States\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Electronics_industry_in_the_United_States\" title=\"Special:EditPage/Template:Electronics industry in the United States\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Electronics_industry_in_the_United_States\" style=\"font-size:114%;margin:0 4em\"><a href=\"/wiki/Electronics_industry_in_the_United_States\" class=\"mw-redirect\" title=\"Electronics industry in the United States\">Electronics industry in the United States</a></div></th></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Companies</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\"></div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Home_appliance\" title=\"Home appliance\">Home appliances</a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Bose_Corporation\" title=\"Bose Corporation\">Bose</a></li>\n<li><a href=\"/wiki/Cisco\" title=\"Cisco\">Cisco</a></li>\n<li><a href=\"/wiki/Corsair_Gaming\" title=\"Corsair Gaming\">Corsair</a></li>\n<li><a href=\"/wiki/Dell\" title=\"Dell\">Dell</a></li>\n<li><a href=\"/wiki/Dolby_Laboratories\" class=\"mw-redirect\" title=\"Dolby Laboratories\">Dolby Laboratories</a></li>\n<li><a href=\"/wiki/Element_Electronics\" title=\"Element Electronics\">Element Electronics</a></li>\n<li><a href=\"/wiki/Emerson_Radio\" title=\"Emerson Radio\">Emerson Radio</a></li>\n<li><a href=\"/wiki/Harman_International\" title=\"Harman International\">Harman</a></li>\n<li><a href=\"/wiki/Honeywell\" title=\"Honeywell\">Honeywell</a></li>\n<li><a href=\"/wiki/HP_Inc.\" title=\"HP Inc.\">HP</a></li>\n<li><a href=\"/wiki/InFocus\" title=\"InFocus\">InFocus</a></li>\n<li><a href=\"/wiki/Jensen_Electronics\" title=\"Jensen Electronics\">Jensen Electronics</a></li>\n<li><a href=\"/wiki/Kenmore_(brand)\" title=\"Kenmore (brand)\">Kenmore</a></li>\n<li><a href=\"/wiki/Kingston_Technology\" title=\"Kingston Technology\">Kingston</a></li>\n<li><a href=\"/wiki/Kimball_International\" title=\"Kimball International\">Kimball</a></li>\n<li><a href=\"/wiki/Koss_Corporation\" title=\"Koss Corporation\">Koss</a></li>\n<li><a href=\"/wiki/Lexmark\" title=\"Lexmark\">Lexmark</a></li>\n<li><a href=\"/wiki/Logitech\" title=\"Logitech\">Logitech</a></li>\n<li><a href=\"/wiki/Magnavox\" title=\"Magnavox\">Magnavox</a></li>\n<li><a href=\"/wiki/Marantz\" title=\"Marantz\">Marantz</a></li>\n<li><a href=\"/wiki/Memorex\" title=\"Memorex\">Memorex</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Monster_Cable\" title=\"Monster Cable\">Monster</a></li>\n<li><a href=\"/wiki/Plantronics\" title=\"Plantronics\">Plantronics</a></li>\n<li><a href=\"/wiki/Planar_Systems\" title=\"Planar Systems\">Planar Systems</a></li>\n<li><a href=\"/wiki/Razer_Inc\" class=\"mw-redirect\" title=\"Razer Inc\">Razer</a></li>\n<li><a href=\"/wiki/Seagate_Technology\" title=\"Seagate Technology\">Seagate</a></li>\n<li><a href=\"/wiki/Seiki_Digital\" title=\"Seiki Digital\">Seiki Digital</a></li>\n<li><a href=\"/wiki/Skullcandy\" title=\"Skullcandy\">Skullcandy</a></li>\n<li><a href=\"/wiki/Turtle_Beach_Corporation\" title=\"Turtle Beach Corporation\">Turtle Beach</a></li>\n<li><a href=\"/wiki/ViewSonic\" title=\"ViewSonic\">ViewSonic</a></li>\n<li><a href=\"/wiki/Vizio\" title=\"Vizio\">Vizio</a></li>\n<li><a href=\"/wiki/Western_Digital\" title=\"Western Digital\">Western Digital</a>\n<ul><li><a href=\"/wiki/HGST\" title=\"HGST\">HGST</a></li>\n<li><a href=\"/wiki/SanDisk\" title=\"SanDisk\">SanDisk</a></li></ul></li>\n<li><a href=\"/wiki/Westinghouse_Electric_Company\" title=\"Westinghouse Electric Company\">Westinghouse Electric Company</a></li>\n<li><a href=\"/wiki/Westinghouse_Electronics\" title=\"Westinghouse Electronics\">Westinghouse Electronics</a></li>\n<li><a href=\"/wiki/Xerox\" title=\"Xerox\">Xerox</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Electronic_component\" title=\"Electronic component\">Electronic components</a></th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/3M\" title=\"3M\">3M</a></li>\n<li><a href=\"/wiki/Achronix\" title=\"Achronix\">Achronix</a></li>\n<li><a href=\"/wiki/Analog_Devices\" title=\"Analog Devices\">Analog Devices</a>\n<ul><li><a href=\"/wiki/Maxim_Integrated\" title=\"Maxim Integrated\">Maxim Integrated</a></li></ul></li>\n<li><a href=\"/wiki/Applied_Materials\" title=\"Applied Materials\">Applied Materials</a></li>\n<li><a href=\"/wiki/Altera\" title=\"Altera\">Altera</a></li>\n<li><a href=\"/wiki/AVX_Corporation\" title=\"AVX Corporation\">AVX</a></li>\n<li><a href=\"/wiki/Cirque_Corporation\" title=\"Cirque Corporation\">Cirque</a></li>\n<li><a href=\"/wiki/Diodes_Incorporated\" title=\"Diodes Incorporated\">Diodes Inc.</a></li>\n<li><a href=\"/wiki/Flex_(company)\" title=\"Flex (company)\">Flex</a></li>\n<li><a href=\"/wiki/Jabil\" title=\"Jabil\">Jabil</a></li>\n<li><a href=\"/wiki/KEMET_Corporation\" title=\"KEMET Corporation\">KEMET</a></li>\n<li><a href=\"/wiki/Maxwell_Technologies\" title=\"Maxwell Technologies\">Maxwell Technologies</a></li>\n<li><a href=\"/wiki/Sanmina_Corporation\" title=\"Sanmina Corporation\">Sanmina</a></li>\n<li><a href=\"/wiki/Vishay_Intertechnology\" title=\"Vishay Intertechnology\">Vishay</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Semiconductor_device\" title=\"Semiconductor device\">Semiconductor devices</a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/AMD\" title=\"AMD\">AMD</a></li>\n<li><a href=\"/wiki/Ampere_Computing\" title=\"Ampere Computing\">Ampere Computing</a></li>\n<li><a href=\"/wiki/Apple_silicon\" title=\"Apple silicon\">Apple</a></li>\n<li><a href=\"/wiki/Broadcom\" title=\"Broadcom\">Broadcom</a></li>\n<li><a href=\"/wiki/Cypress_Semiconductor\" title=\"Cypress Semiconductor\">Cypress Semiconductor</a></li>\n<li><a href=\"/wiki/GlobalFoundries\" title=\"GlobalFoundries\">GlobalFoundries</a></li>\n<li><a href=\"/wiki/IBM\" title=\"IBM\">IBM</a></li>\n<li><a href=\"/wiki/Intel\" title=\"Intel\">Intel</a></li>\n<li><a href=\"/wiki/Interlink_Electronics\" title=\"Interlink Electronics\">Interlink</a></li>\n<li><a href=\"/wiki/KLA-Tencor\" class=\"mw-redirect\" title=\"KLA-Tencor\">KLA-Tencor</a></li>\n<li><a href=\"/wiki/Lam_Research\" title=\"Lam Research\">Lam Research</a></li>\n<li><a href=\"/wiki/Lattice_Semiconductor\" title=\"Lattice Semiconductor\">Lattice</a></li>\n<li><a href=\"/wiki/Marvell_Technology\" title=\"Marvell Technology\">Marvell Technology</a></li>\n<li><a href=\"/wiki/Microchip_Technology\" title=\"Microchip Technology\">Microchip</a> (<a href=\"/wiki/Atmel\" title=\"Atmel\">Atmel</a>)</li>\n<li><a href=\"/wiki/Micron_Technology\" title=\"Micron Technology\">Micron</a></li>\n<li><a href=\"/wiki/NetApp\" title=\"NetApp\">NetApp</a></li>\n<li><a href=\"/wiki/Nimbus_Data\" title=\"Nimbus Data\">Nimbus Data</a></li>\n<li><a href=\"/wiki/Nvidia\" title=\"Nvidia\">Nvidia</a>\n<ul><li><a href=\"/wiki/Mellanox_Technologies\" title=\"Mellanox Technologies\">Mellanox</a></li></ul></li>\n<li><a href=\"/wiki/NXP_Semiconductors\" title=\"NXP Semiconductors\">NXP</a></li>\n<li><a href=\"/wiki/Onsemi\" title=\"Onsemi\">Onsemi</a></li>\n<li><a href=\"/wiki/Qualcomm\" title=\"Qualcomm\">Qualcomm</a></li>\n<li><a href=\"/wiki/Silicon_Image\" title=\"Silicon Image\">Silicon Image</a></li>\n<li><a href=\"/wiki/Synaptics\" title=\"Synaptics\">Synaptics</a></li>\n<li><a href=\"/wiki/Tabula_(company)\" class=\"mw-redirect\" title=\"Tabula (company)\">Tabula</a></li>\n<li><a href=\"/wiki/Texas_Instruments\" title=\"Texas Instruments\">Texas Instruments</a></li>\n<li><a href=\"/wiki/Xilinx\" title=\"Xilinx\">Xilinx</a></li>\n<li><a href=\"/wiki/Zilog\" title=\"Zilog\">Zilog</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/Mobile_device\" title=\"Mobile device\">Mobile devices</a></th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Apple_Inc\" class=\"mw-redirect\" title=\"Apple Inc\">Apple</a></li>\n<li><a href=\"/wiki/BLU_Products\" title=\"BLU Products\">BLU</a></li>\n<li><a href=\"/wiki/Google\" title=\"Google\">Google</a></li>\n<li><a href=\"/wiki/Lenovo\" title=\"Lenovo\">Lenovo</a> (<a href=\"/wiki/Motorola_Mobility\" title=\"Motorola Mobility\">Motorola Mobility</a>)</li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Other</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Cadence_Design_Systems\" title=\"Cadence Design Systems\">Cadence Design Systems</a></li>\n<li><a href=\"/wiki/Cray\" title=\"Cray\">Cray</a></li>\n<li><a href=\"/wiki/General_Electric\" title=\"General Electric\">GE</a>\n<ul><li><a href=\"/wiki/RCA_(trademark)\" title=\"RCA (trademark)\">RCA</a></li></ul></li>\n<li><a href=\"/wiki/Oracle_Corporation\" title=\"Oracle Corporation\">Oracle Corporation</a></li>\n<li><a href=\"/wiki/Synopsys\" title=\"Synopsys\">Synopsys</a></li></ul>\n</div></td></tr></tbody></table><div></div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Defunct</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Actel\" title=\"Actel\">Actel</a></li>\n<li><a href=\"/wiki/Atari_Corporation\" title=\"Atari Corporation\">Atari Corporation</a></li>\n<li><a href=\"/wiki/Commodore_International\" title=\"Commodore International\">Commodore</a></li>\n<li><a href=\"/wiki/Compaq\" title=\"Compaq\">Compaq</a></li>\n<li><a href=\"/wiki/Fairchild_Semiconductor\" title=\"Fairchild Semiconductor\">Fairchild</a></li>\n<li><a href=\"/wiki/Freescale_Semiconductor\" title=\"Freescale Semiconductor\">Freescale</a></li>\n<li><a href=\"/wiki/LSI_Corporation\" title=\"LSI Corporation\">LSI</a></li>\n<li><a href=\"/wiki/Microsemi\" title=\"Microsemi\">Microsemi</a></li>\n<li><a href=\"/wiki/National_Semiconductor\" title=\"National Semiconductor\">National Semiconductor</a></li>\n<li><a href=\"/wiki/Palm_Inc\" class=\"mw-redirect\" title=\"Palm Inc\">Palm</a></li>\n<li><a href=\"/wiki/Philco\" title=\"Philco\">Philco</a></li>\n<li><a href=\"/wiki/RCA\" title=\"RCA\">RCA</a></li>\n<li><a href=\"/wiki/Signetics\" title=\"Signetics\">Signetics</a></li>\n<li><a href=\"/wiki/Silicon_Graphics\" title=\"Silicon Graphics\">Silicon Graphics</a></li>\n<li><a href=\"/wiki/Solectron\" title=\"Solectron\">Solectron</a></li>\n<li><a href=\"/wiki/Sun_Microsystems\" title=\"Sun Microsystems\">Sun Microsystems</a></li>\n<li><a href=\"/wiki/Zenith_Electronics\" title=\"Zenith Electronics\">Zenith Electronics</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Major_personal_computer,_server,_and_mainframe_hardware_companies\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Major_computer_hardware_companies\" title=\"Template:Major computer hardware companies\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Major_computer_hardware_companies\" title=\"Template talk:Major computer hardware companies\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Major_computer_hardware_companies\" title=\"Special:EditPage/Template:Major computer hardware companies\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Major_personal_computer,_server,_and_mainframe_hardware_companies\" style=\"font-size:114%;margin:0 4em\">Major personal computer, server, and mainframe hardware companies</div></th></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>Companies with an annual revenue of over US$3 billion</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Personal computers<br />and servers</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Acer_Inc.\" title=\"Acer Inc.\">Acer</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Asus\" title=\"Asus\">Asus</a></li>\n<li><a href=\"/wiki/Dell\" title=\"Dell\">Dell</a></li>\n<li><a href=\"/wiki/Fujitsu\" title=\"Fujitsu\">Fujitsu</a></li>\n<li><a href=\"/wiki/Huawei\" title=\"Huawei\">Huawei</a></li>\n<li><a href=\"/wiki/HP_Inc.\" title=\"HP Inc.\">HP</a></li>\n<li><a href=\"/wiki/Lenovo\" title=\"Lenovo\">Lenovo</a></li>\n<li><a href=\"/wiki/LG_Electronics\" title=\"LG Electronics\">LG</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Micro-Star_International\" title=\"Micro-Star International\">MSI</a></li>\n<li><a href=\"/wiki/NEC\" title=\"NEC\">NEC</a></li>\n<li><a href=\"/wiki/Panasonic\" title=\"Panasonic\">Panasonic</a></li>\n<li><a href=\"/wiki/Razer_Inc.\" title=\"Razer Inc.\">Razer</a></li>\n<li><a href=\"/wiki/Samsung_Electronics\" title=\"Samsung Electronics\">Samsung</a></li>\n<li><a href=\"/wiki/Sharp_Corporation\" title=\"Sharp Corporation\">Sharp</a> (<a href=\"/wiki/Dynabook_Inc.\" title=\"Dynabook Inc.\">Dynabook</a>)</li>\n<li><a href=\"/wiki/Vaio\" title=\"Vaio\">Vaio</a></li></ul>\n</div><table class=\"nowraplinks navbox-subgroup\" style=\"border-spacing:0\"><tbody><tr><th id=\"Servers_only\" scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Servers only</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Cisco\" title=\"Cisco\">Cisco</a></li>\n<li><a href=\"/wiki/Dell_EMC\" title=\"Dell EMC\">Dell EMC</a></li>\n<li><a href=\"/wiki/Hewlett_Packard_Enterprise\" title=\"Hewlett Packard Enterprise\">HPE</a></li>\n<li><a href=\"/wiki/IBM\" title=\"IBM\">IBM</a></li>\n<li><a href=\"/wiki/Inspur\" title=\"Inspur\">Inspur</a></li>\n<li><a href=\"/wiki/NetApp\" title=\"NetApp\">NetApp</a></li>\n<li><a href=\"/wiki/Oracle_Corporation\" title=\"Oracle Corporation\">Oracle</a></li></ul>\n</div></td></tr></tbody></table><div>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Mainframes</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Fujitsu\" title=\"Fujitsu\">Fujitsu</a></li>\n<li><a href=\"/wiki/Hewlett_Packard_Enterprise\" title=\"Hewlett Packard Enterprise\">HPE</a></li>\n<li><a href=\"/wiki/IBM\" title=\"IBM\">IBM</a></li></ul>\n</div></td></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>\n<dl><dt>See also</dt>\n<dd><a href=\"/wiki/List_of_largest_information_technology_companies_by_revenue\" class=\"mw-redirect\" title=\"List of largest information technology companies by revenue\">Largest IT companies</a></dd>\n<dd><a href=\"/wiki/List_of_computer_hardware_manufacturers\" title=\"List of computer hardware manufacturers\">Computer hardware manufacturers</a></dd>\n<dd><a href=\"/wiki/Category:Home_computer_hardware_companies\" title=\"Category:Home computer hardware companies\">Home computer hardware companies</a></dd>\n<dd><a href=\"/wiki/Category:Server_hardware\" title=\"Category:Server hardware\">Server hardware</a></dd>\n<dd><a href=\"/wiki/Category:Mainframe_computers\" title=\"Category:Mainframe computers\">Mainframe computers</a></dd></dl>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Major_Internet_companies\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Major_Internet_companies\" title=\"Template:Major Internet companies\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Major_Internet_companies\" title=\"Template talk:Major Internet companies\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Major_Internet_companies\" title=\"Special:EditPage/Template:Major Internet companies\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Major_Internet_companies\" style=\"font-size:114%;margin:0 4em\">Major <a href=\"/wiki/Internet\" title=\"Internet\">Internet</a> companies</div></th></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>Companies with an annual revenue of over US$4 billion</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\"><a href=\"/wiki/List_of_largest_Internet_companies\" title=\"List of largest Internet companies\">Internet </a></th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Adobe_Inc.\" title=\"Adobe Inc.\">Adobe</a></li>\n<li><a href=\"/wiki/Alibaba_Group\" title=\"Alibaba Group\">Alibaba</a></li>\n<li><a href=\"/wiki/Alphabet_Inc.\" title=\"Alphabet Inc.\">Alphabet</a>\n<ul><li><a href=\"/wiki/Google\" title=\"Google\">Google</a></li></ul></li>\n<li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Baidu\" title=\"Baidu\">Baidu</a></li>\n<li><a href=\"/wiki/IAC_(company)\" class=\"mw-redirect\" title=\"IAC (company)\">IAC</a></li>\n<li><a href=\"/wiki/Kakao\" title=\"Kakao\">Kakao</a></li>\n<li><a href=\"/wiki/Meituan\" title=\"Meituan\">Meituan</a></li>\n<li><a href=\"/wiki/Meta_Platforms\" title=\"Meta Platforms\">Meta</a>\n<ul><li><a href=\"/wiki/Facebook\" title=\"Facebook\">Facebook</a></li></ul></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Naver_Corporation\" title=\"Naver Corporation\">Naver</a></li>\n<li><a href=\"/wiki/NetEase\" title=\"NetEase\">NetEase</a></li>\n<li><a href=\"/wiki/Tencent\" title=\"Tencent\">Tencent</a></li>\n<li><a href=\"/wiki/Yandex\" title=\"Yandex\">Yandex</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Cloud computing</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Akamai_Technologies\" title=\"Akamai Technologies\">Akamai</a></li>\n<li><a href=\"/wiki/Alibaba_Cloud\" title=\"Alibaba Cloud\">Alibaba Cloud</a></li>\n<li><a href=\"/wiki/Amazon_Web_Services\" title=\"Amazon Web Services\">AWS</a></li>\n<li><a href=\"/wiki/ICloud\" title=\"ICloud\">Apple iCloud</a></li>\n<li><a href=\"/wiki/Google_Cloud_Platform\" title=\"Google Cloud Platform\">Google</a></li>\n<li><a href=\"/wiki/IBM_Cloud\" title=\"IBM Cloud\">IBM</a></li>\n<li><a href=\"/wiki/Microsoft_Azure\" title=\"Microsoft Azure\">Microsoft Azure</a></li>\n<li><a href=\"/wiki/Oracle_Corporation\" title=\"Oracle Corporation\">Oracle Corporation</a></li>\n<li><a href=\"/wiki/Salesforce\" title=\"Salesforce\">Salesforce</a></li>\n<li><a href=\"/wiki/ServiceNow\" title=\"ServiceNow\">ServiceNow</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">E-commerce</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon.com</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Booking_Holdings\" title=\"Booking Holdings\">Booking Holdings</a></li>\n<li><a href=\"/wiki/Coupang\" title=\"Coupang\">Coupang</a></li>\n<li><a href=\"/wiki/EBay\" title=\"EBay\">eBay</a></li>\n<li><a href=\"/wiki/Expedia\" title=\"Expedia\">Expedia</a></li>\n<li><a href=\"/wiki/Flipkart\" title=\"Flipkart\">Flipkart</a></li>\n<li><a href=\"/wiki/Groupon\" title=\"Groupon\">Groupon</a></li>\n<li><a href=\"/wiki/JD.com\" title=\"JD.com\">JD.com</a></li>\n<li><a href=\"/wiki/Lazada_Group\" class=\"mw-redirect\" title=\"Lazada Group\">Lazada</a></li>\n<li><a href=\"/wiki/Mercado_Libre\" title=\"Mercado Libre\">Mercado Libre</a></li>\n<li><a href=\"/wiki/Rakuten\" title=\"Rakuten\">Rakuten</a></li>\n<li><a href=\"/wiki/Shopee\" title=\"Shopee\">Shopee</a></li>\n<li><a href=\"/wiki/Shopify\" title=\"Shopify\">Shopify</a></li>\n<li><a href=\"/wiki/Suning.com\" title=\"Suning.com\">Suning.com</a></li>\n<li><a href=\"/wiki/Trip.com\" title=\"Trip.com\">Trip.com</a></li>\n<li><a href=\"/wiki/Uber\" title=\"Uber\">Uber</a></li>\n<li><a href=\"/wiki/Wayfair\" title=\"Wayfair\">Wayfair</a></li>\n<li><a href=\"/wiki/Zalando\" title=\"Zalando\">Zalando</a></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Media</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Bloomberg_L.P.\" title=\"Bloomberg L.P.\">Bloomberg</a></li>\n<li><a href=\"/wiki/BuzzFeed\" title=\"BuzzFeed\">BuzzFeed</a></li>\n<li><a href=\"/wiki/ByteDance\" title=\"ByteDance\">ByteDance</a></li>\n<li><a href=\"/wiki/G/O_Media\" title=\"G/O Media\">G/O Media</a></li>\n<li><a href=\"/wiki/Kuaishou\" title=\"Kuaishou\">Kuaishou</a></li>\n<li><a href=\"/wiki/Netflix,_Inc.\" title=\"Netflix, Inc.\">Netflix</a></li>\n<li><a href=\"/wiki/Paramount_Streaming\" title=\"Paramount Streaming\">Paramount Streaming</a></li>\n<li><a href=\"/wiki/Spotify\" title=\"Spotify\">Spotify</a></li>\n<li><a href=\"/wiki/Warner_Bros._Discovery\" title=\"Warner Bros. Discovery\">Warner Bros. Discovery</a></li></ul>\n</div></td></tr></tbody></table></div>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"></div><div role=\"navigation\" class=\"navbox\" aria-labelledby=\"Major_software_companies\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1063604349\"><div class=\"navbar plainlinks hlist navbar-mini\"><ul><li class=\"nv-view\"><a href=\"/wiki/Template:Major_software_companies\" title=\"Template:Major software companies\"><abbr title=\"View this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">v</abbr></a></li><li class=\"nv-talk\"><a href=\"/wiki/Template_talk:Major_software_companies\" title=\"Template talk:Major software companies\"><abbr title=\"Discuss this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">t</abbr></a></li><li class=\"nv-edit\"><a href=\"/wiki/Special:EditPage/Template:Major_software_companies\" title=\"Special:EditPage/Template:Major software companies\"><abbr title=\"Edit this template\" style=\";;background:none transparent;border:none;box-shadow:none;padding:0;\">e</abbr></a></li></ul></div><div id=\"Major_software_companies\" style=\"font-size:114%;margin:0 4em\">Major <a href=\"/wiki/Software\" title=\"Software\">software</a> companies</div></th></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>Companies with annual software revenue of over US$3 billion</div></td></tr><tr><td colspan=\"2\" class=\"navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><a href=\"/wiki/Adobe_Inc.\" title=\"Adobe Inc.\">Adobe</a></li>\n<li><a href=\"/wiki/Amadeus_IT_Group\" title=\"Amadeus IT Group\">Amadeus IT Group</a></li>\n<li><a href=\"/wiki/Amazon_(company)\" title=\"Amazon (company)\">Amazon</a></li>\n<li><a href=\"/wiki/Apple_Inc.\" title=\"Apple Inc.\">Apple</a></li>\n<li><a href=\"/wiki/Autodesk\" title=\"Autodesk\">Autodesk</a></li>\n<li><a href=\"/wiki/Citrix_Systems\" title=\"Citrix Systems\">Citrix</a></li>\n<li><a href=\"/wiki/FIS_(company)\" title=\"FIS (company)\">FIS</a></li>\n<li><a href=\"/wiki/Google\" title=\"Google\">Google</a></li>\n<li><a href=\"/wiki/Hewlett_Packard_Enterprise\" title=\"Hewlett Packard Enterprise\">HPE</a></li>\n<li><a href=\"/wiki/IBM\" title=\"IBM\">IBM</a></li>\n<li><a href=\"/wiki/Intuit\" title=\"Intuit\">Intuit</a></li>\n<li><a href=\"/wiki/Infor\" title=\"Infor\">Infor</a></li>\n<li><a class=\"mw-selflink selflink\">Microsoft</a></li>\n<li><a href=\"/wiki/Oracle_Corporation\" title=\"Oracle Corporation\">Oracle</a></li>\n<li><a href=\"/wiki/Quest_Software\" title=\"Quest Software\">Quest Software</a></li>\n<li><a href=\"/wiki/Sage_Group\" title=\"Sage Group\">Sage Group</a></li>\n<li><a href=\"/wiki/SAP\" title=\"SAP\">SAP</a></li>\n<li><a href=\"/wiki/Tencent\" title=\"Tencent\">Tencent</a></li></ul>\n</div></td></tr><tr><td class=\"navbox-abovebelow\" colspan=\"2\"><div>\n<dl><dt>See also</dt>\n<dd><a href=\"/wiki/List_of_largest_technology_companies_by_revenue\" title=\"List of largest technology companies by revenue\">Largest IT companies</a></dd>\n<dd><a href=\"/wiki/List_of_the_largest_software_companies\" title=\"List of the largest software companies\">Largest software companies</a></dd>\n<dd><a href=\"/wiki/Category:Software_companies\" title=\"Category:Software companies\">Category:Software companies</a></dd></dl>\n</div></td></tr></tbody></table></div></div></td></tr></tbody></table></div>\n<style data-mw-deduplicate=\"TemplateStyles:r1130092004\">.mw-parser-output .portal-bar{font-size:88%;font-weight:bold;display:flex;justify-content:center;align-items:baseline}.mw-parser-output .portal-bar-bordered{padding:0 2em;background-color:#fdfdfd;border:1px solid #a2a9b1;clear:both;margin:1em auto 0}.mw-parser-output .portal-bar-related{font-size:100%;justify-content:flex-start}.mw-parser-output .portal-bar-unbordered{padding:0 1.7em;margin-left:0}.mw-parser-output .portal-bar-header{margin:0 1em 0 0.5em;flex:0 0 auto;min-height:24px}.mw-parser-output .portal-bar-content{display:flex;flex-flow:row wrap;flex:0 1 auto;padding:0.15em 0;column-gap:1em;align-items:baseline;margin:0;list-style:none}.mw-parser-output .portal-bar-content-related{margin:0;list-style:none}.mw-parser-output .portal-bar-item{display:inline-block;margin:0.15em 0.2em;min-height:24px;line-height:24px}@media screen and (max-width:768px){.mw-parser-output .portal-bar{font-size:88%;font-weight:bold;display:flex;flex-flow:column wrap;align-items:baseline}.mw-parser-output .portal-bar-header{text-align:center;flex:0;padding-left:0.5em;margin:0 auto}.mw-parser-output .portal-bar-related{font-size:100%;align-items:flex-start}.mw-parser-output .portal-bar-content{display:flex;flex-flow:row wrap;align-items:center;flex:0;column-gap:1em;border-top:1px solid #a2a9b1;margin:0 auto;list-style:none}.mw-parser-output .portal-bar-content-related{border-top:none;margin:0;list-style:none}}.mw-parser-output .navbox+link+.portal-bar,.mw-parser-output .navbox+style+.portal-bar,.mw-parser-output .navbox+link+.portal-bar-bordered,.mw-parser-output .navbox+style+.portal-bar-bordered,.mw-parser-output .sister-bar+link+.portal-bar,.mw-parser-output .sister-bar+style+.portal-bar,.mw-parser-output .portal-bar+.navbox-styles+.navbox,.mw-parser-output .portal-bar+.navbox-styles+.sister-bar{margin-top:-1px}</style><div class=\"portal-bar noprint metadata noviewer portal-bar-bordered\" role=\"navigation\" aria-label=\"Portals\"><span class=\"portal-bar-header\"><a href=\"/wiki/Wikipedia:Contents/Portals\" title=\"Wikipedia:Contents/Portals\">Portals</a>:</span><ul class=\"portal-bar-content\"><li class=\"portal-bar-item\"><span typeof=\"mw:File\"><span><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Industry5.svg/19px-Industry5.svg.png\" decoding=\"async\" width=\"19\" height=\"19\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Industry5.svg/29px-Industry5.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Industry5.svg/38px-Industry5.svg.png 2x\" data-file-width=\"512\" data-file-height=\"512\" /></span></span>&#160;<a href=\"/wiki/Portal:Companies\" title=\"Portal:Companies\">Companies</a></li><li class=\"portal-bar-item\"><span class=\"mw-image-border\" typeof=\"mw:File\"><span><img alt=\"flag\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/21px-Flag_of_the_United_States.svg.png\" decoding=\"async\" width=\"21\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/32px-Flag_of_the_United_States.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/42px-Flag_of_the_United_States.svg.png 2x\" data-file-width=\"1235\" data-file-height=\"650\" /></span></span>&#160;<a href=\"/wiki/Portal:United_States\" title=\"Portal:United States\">United States</a></li></ul></div><style data-mw-deduplicate=\"TemplateStyles:r1130094686\">.mw-parser-output .sister-bar{display:flex;justify-content:center;align-items:baseline;font-size:88%;background-color:#fdfdfd;border:1px solid #a2a9b1;clear:both;margin:1em 0 0;padding:0 2em}.mw-parser-output .sister-bar-header{margin:0 1em 0 0.5em;padding:0.2em 0;flex:0 0 auto;min-height:24px;line-height:22px}.mw-parser-output .sister-bar-content{display:flex;flex-flow:row wrap;flex:0 1 auto;align-items:baseline;padding:0.2em 0;column-gap:1em;margin:0;list-style:none}.mw-parser-output .sister-bar-item{display:flex;align-items:baseline;margin:0.15em 0;min-height:24px;text-align:left}.mw-parser-output .sister-bar-logo{width:22px;line-height:22px;margin:0 0.2em;text-align:right}.mw-parser-output .sister-bar-link{margin:0 0.2em;text-align:left}@media screen and (max-width:960px){.mw-parser-output .sister-bar{flex-flow:column wrap;margin:1em auto 0}.mw-parser-output .sister-bar-header{flex:0 1}.mw-parser-output .sister-bar-content{flex:1;border-top:1px solid #a2a9b1;margin:0;list-style:none}.mw-parser-output .sister-bar-item{flex:0 0 20em;min-width:20em}}.mw-parser-output .navbox+link+.sister-bar,.mw-parser-output .navbox+style+.sister-bar,.mw-parser-output .portal-bar+link+.sister-bar,.mw-parser-output .portal-bar+style+.sister-bar,.mw-parser-output .sister-bar+.navbox-styles+.navbox,.mw-parser-output .sister-bar+.navbox-styles+.portal-bar{margin-top:-1px}</style><div class=\"noprint metadata sister-bar\" role=\"navigation\" aria-label=\"sister-projects\"><div class=\"sister-bar-header\"><b>Microsoft</b> at Wikipedia's <a href=\"/wiki/Wikipedia:Wikimedia_sister_projects\" title=\"Wikipedia:Wikimedia sister projects\"><span id=\"sister-projects\" style=\"white-space:nowrap;\">sister projects</span></a>:</div><ul class=\"sister-bar-content\"><li class=\"sister-bar-item\"><span class=\"sister-bar-logo\"><span typeof=\"mw:File\"><span><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/14px-Commons-logo.svg.png\" decoding=\"async\" width=\"14\" height=\"19\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/21px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/28px-Commons-logo.svg.png 2x\" data-file-width=\"1024\" data-file-height=\"1376\" /></span></span></span><span class=\"sister-bar-link\"><b><a href=\"https://commons.wikimedia.org/wiki/Category:Microsoft\" class=\"extiw\" title=\"c:Category:Microsoft\">Media</a></b> from Commons</span></li><li class=\"sister-bar-item\"><span class=\"sister-bar-logo\"><span typeof=\"mw:File\"><span><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/2/24/Wikinews-logo.svg/21px-Wikinews-logo.svg.png\" decoding=\"async\" width=\"21\" height=\"11\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/2/24/Wikinews-logo.svg/32px-Wikinews-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/24/Wikinews-logo.svg/42px-Wikinews-logo.svg.png 2x\" data-file-width=\"759\" data-file-height=\"415\" /></span></span></span><span class=\"sister-bar-link\"><b><a href=\"https://en.wikinews.org/wiki/Category:Microsoft\" class=\"extiw\" title=\"n:Category:Microsoft\">News</a></b> from Wikinews</span></li><li class=\"sister-bar-item\"><span class=\"sister-bar-logo\"><span typeof=\"mw:File\"><span><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/16px-Wikiquote-logo.svg.png\" decoding=\"async\" width=\"16\" height=\"19\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/24px-Wikiquote-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/32px-Wikiquote-logo.svg.png 2x\" data-file-width=\"300\" data-file-height=\"355\" /></span></span></span><span class=\"sister-bar-link\"><b><a href=\"https://en.wikiquote.org/wiki/Microsoft\" class=\"extiw\" title=\"q:Microsoft\">Quotations</a></b> from Wikiquote</span></li><li class=\"sister-bar-item\"><span class=\"sister-bar-logo\"><span typeof=\"mw:File\"><span><img alt=\"\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/21px-Wikiversity_logo_2017.svg.png\" decoding=\"async\" width=\"21\" height=\"17\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/32px-Wikiversity_logo_2017.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/42px-Wikiversity_logo_2017.svg.png 2x\" data-file-width=\"626\" data-file-height=\"512\" /></span></span></span><span class=\"sister-bar-link\"><b><a href=\"https://en.wikiversity.org/wiki/Portal:_Microsoft\" class=\"extiw\" title=\"v:Portal: Microsoft\">Resources</a></b> from Wikiversity</span></li></ul></div>\n<p><span class=\"geo-inline-hidden noexcerpt\"><style data-mw-deduplicate=\"TemplateStyles:r1156832818\">.mw-parser-output .geo-default,.mw-parser-output .geo-dms,.mw-parser-output .geo-dec{display:inline}.mw-parser-output .geo-nondefault,.mw-parser-output .geo-multi-punct,.mw-parser-output .geo-inline-hidden{display:none}.mw-parser-output .longitude,.mw-parser-output .latitude{white-space:nowrap}</style><span class=\"plainlinks nourlexpansion load-gadget\" data-gadget=\"WikiMiniAtlas\"><a class=\"external text\" href=\"https://geohack.toolforge.org/geohack.php?pagename=Microsoft&amp;params=47_38_23_N_122_7_42_W_region:US_dim:540\"><span class=\"geo-default\"><span class=\"geo-dms\" title=\"Maps, aerial photos, and other data for this location\"><span class=\"latitude\">47°38′23″N</span> <span class=\"longitude\">122°7′42″W</span></span></span><span class=\"geo-multi-punct\">&#xfeff; / &#xfeff;</span><span class=\"geo-nondefault\"><span class=\"geo-dec\" title=\"Maps, aerial photos, and other data for this location\">47.63972°N 122.12833°W</span><span style=\"display:none\">&#xfeff; / <span class=\"geo\">47.63972; -122.12833</span></span></span></a></span></span>\n</p>\n<div class=\"navbox-styles\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1129693374\"><link rel=\"mw-deduplicated-inline-style\" href=\"mw-data:TemplateStyles:r1061467846\"><style data-mw-deduplicate=\"TemplateStyles:r1038841319\">.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}</style></div><div role=\"navigation\" class=\"navbox authority-control\" aria-labelledby=\"Authority_control_databases_frameless&amp;#124;text-top&amp;#124;10px&amp;#124;alt=Edit_this_at_Wikidata&amp;#124;link=https&amp;#58;//www.wikidata.org/wiki/Q2283#identifiers&amp;#124;class=noprint&amp;#124;Edit_this_at_Wikidata\" style=\"padding:3px\"><table class=\"nowraplinks hlist mw-collapsible autocollapse navbox-inner\" style=\"border-spacing:0;background:transparent;color:inherit\"><tbody><tr><th scope=\"col\" class=\"navbox-title\" colspan=\"2\"><div id=\"Authority_control_databases_frameless&amp;#124;text-top&amp;#124;10px&amp;#124;alt=Edit_this_at_Wikidata&amp;#124;link=https&amp;#58;//www.wikidata.org/wiki/Q2283#identifiers&amp;#124;class=noprint&amp;#124;Edit_this_at_Wikidata\" style=\"font-size:114%;margin:0 4em\"><a href=\"/wiki/Help:Authority_control\" title=\"Help:Authority control\">Authority control databases</a> <span class=\"mw-valign-text-top noprint\" typeof=\"mw:File/Frameless\"><a href=\"https://www.wikidata.org/wiki/Q2283#identifiers\" title=\"Edit this at Wikidata\"><img alt=\"Edit this at Wikidata\" src=\"//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png\" decoding=\"async\" width=\"10\" height=\"10\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x\" data-file-width=\"20\" data-file-height=\"20\" /></a></span></div></th></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">International</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://isni.org/isni/0000000121813404\">ISNI</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://viaf.org/viaf/148809628\">VIAF</a></span></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">National</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://authority.bibsys.no/authority/rest/authorities/html/90182985\">Norway</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&amp;authority_id=XX121178\">Spain</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://catalogue.bnf.fr/ark:/12148/cb120673486\">France</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://data.bnf.fr/ark:/12148/cb120673486\">BnF data</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://cantic.bnc.cat/registre/981058512489506706\">Catalonia</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://d-nb.info/gnd/5003949-0\">Germany</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"http://olduli.nli.org.il/F/?func=find-b&amp;local_base=NLX10&amp;find_code=UID&amp;request=987007265465105171\">Israel</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://id.loc.gov/authorities/n86810571\">United States</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://libris.kb.se/86lpvmjs41cgxwv\">Sweden</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://kopkatalogs.lv/F?func=direct&amp;local_base=lnc10&amp;doc_number=000083581&amp;P_CON_LNG=ENG\">Latvia</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://id.ndl.go.jp/auth/ndlna/00322150\">Japan</a></span></li>\n<li><span class=\"uid\"><span class=\"rt-commentedText tooltip tooltip-dotted\" title=\"Microsoft Corporation\"><a rel=\"nofollow\" class=\"external text\" href=\"https://aleph.nkp.cz/F/?func=find-c&amp;local_base=aut&amp;ccl_term=ica=kn20020321575&amp;CON_LNG=ENG\">Czech Republic</a></span></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://nla.gov.au/anbd.aut-an35928074\">Australia</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://data.nlg.gr/resource/authority/record44026\">Greece</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"http://katalog.nsk.hr/F/?func=direct&amp;doc_number=000351632&amp;local_base=nsk10\">Croatia</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://dbn.bn.org.pl/descriptor-details/9810635047505606\">Poland</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"http://id.bnportugal.gov.pt/aut/catbnp/135822\">Portugal</a></span></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Academics</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://ci.nii.ac.jp/author/DA04359585?l=en\">CiNii</a></span></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Artists</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.getty.edu/vow/ULANFullDisplay?find=&amp;role=&amp;nation=&amp;subjectid=500333090\">ULAN</a></span></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">People</th><td class=\"navbox-list-with-group navbox-list navbox-odd\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://trove.nla.gov.au/people/1149675\">Trove</a></span></li></ul>\n</div></td></tr><tr><th scope=\"row\" class=\"navbox-group\" style=\"width:1%\">Other</th><td class=\"navbox-list-with-group navbox-list navbox-even\" style=\"width:100%;padding:0\"><div style=\"padding:0 0.25em\">\n<ul><li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"http://esu.com.ua/search_articles.php?id=60519\">Encyclopedia of Modern Ukraine</a></span></li>\n<li><span class=\"uid\"><a rel=\"nofollow\" class=\"external text\" href=\"https://www.idref.fr/030109434\">IdRef</a></span></li></ul>\n</div></td></tr></tbody></table></div>\n<!--\nNewPP limit report\nParsed by mw‐web.codfw.main‐65d56d456f‐rtgdj\nCached time: 20240313194038\nCache expiry: 2592000\nReduced expiry: false\nComplications: [vary‐revision‐sha1, show‐toc]\nCPU time usage: 3.073 seconds\nReal time usage: 3.517 seconds\nPreprocessor visited node count: 21090/1000000\nPost‐expand include size: 812559/2097152 bytes\nTemplate argument size: 61194/2097152 bytes\nHighest expansion depth: 28/100\nExpensive parser function count: 44/500\nUnstrip recursion depth: 1/20\nUnstrip post‐expand size: 953947/5000000 bytes\nLua time usage: 1.924/10.000 seconds\nLua memory usage: 15258299/52428800 bytes\nLua Profile:\n    ?                                                                340 ms       15.9%\n    dataWrapper <mw.lua:672>                                         280 ms       13.1%\n    MediaWiki\\Extension\\Scribunto\\Engines\\LuaSandbox\\LuaSandboxCallback::gsub      240 ms       11.2%\n    MediaWiki\\Extension\\Scribunto\\Engines\\LuaSandbox\\LuaSandboxCallback::callParserFunction      180 ms        8.4%\n    recursiveClone <mwInit.lua:41>                                    80 ms        3.7%\n    MediaWiki\\Extension\\Scribunto\\Engines\\LuaSandbox\\LuaSandboxCallback::getExpandedArgument       80 ms        3.7%\n    MediaWiki\\Extension\\Scribunto\\Engines\\LuaSandbox\\LuaSandboxCallback::getEntityStatements       60 ms        2.8%\n    makeMessage <mw.message.lua:76>                                   60 ms        2.8%\n    MediaWiki\\Extension\\Scribunto\\Engines\\LuaSandbox\\LuaSandboxCallback::unstripNoWiki       40 ms        1.9%\n    <mw.title.lua:50>                                                 40 ms        1.9%\n    [others]                                                         740 ms       34.6%\nNumber of Wikibase entities loaded: 1/400\n-->\n<!--\nTransclusion expansion time report (%,ms,calls,template)\n100.00% 2986.514      1 -total\n 57.75% 1724.621      2 Template:Reflist\n 33.83% 1010.329    192 Template:Cite_web\n 15.30%  456.945      2 Template:Infobox\n 11.90%  355.326      1 Template:Infobox_company\n 10.53%  314.527     66 Template:Cite_news\n  4.21%  125.653      1 Template:Short_description\n  3.99%  119.297      4 Template:Unbulleted_list\n  3.96%  118.287      1 Template:Infobox_network_service_provider\n  3.37%  100.568      3 Template:Ifnumber\n-->\n\n<!-- Saved in parser cache with key enwiki:pcache:idhash:19001-0!canonical and timestamp 20240313194038 and revision id 1213513440. Rendering was triggered because: page-view\n -->\n</div><!--esi <esi:include src=\"/esitest-fa8a495983347898/content\" /> --><noscript><img src=\"https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1\" alt=\"\" width=\"1\" height=\"1\" style=\"border: none; position: absolute;\"></noscript>\n<div class=\"printfooter\" data-nosnippet=\"\">Retrieved from \"<a dir=\"ltr\" href=\"https://en.wikipedia.org/w/index.php?title=Microsoft&amp;oldid=1213513440\">https://en.wikipedia.org/w/index.php?title=Microsoft&amp;oldid=1213513440</a>\"</div></div>\n\t\t\t\t\t<div id=\"catlinks\" class=\"catlinks\" data-mw=\"interface\"><div id=\"mw-normal-catlinks\" class=\"mw-normal-catlinks\"><a href=\"/wiki/Help:Category\" title=\"Help:Category\">Categories</a>: <ul><li><a href=\"/wiki/Category:Companies_in_the_Nasdaq-100\" title=\"Category:Companies in the Nasdaq-100\">Companies in the Nasdaq-100</a></li><li><a href=\"/wiki/Category:Companies_listed_on_the_Nasdaq\" title=\"Category:Companies listed on the Nasdaq\">Companies listed on the Nasdaq</a></li><li><a href=\"/wiki/Category:Microsoft\" title=\"Category:Microsoft\">Microsoft</a></li><li><a href=\"/wiki/Category:1975_establishments_in_New_Mexico\" title=\"Category:1975 establishments in New Mexico\">1975 establishments in New Mexico</a></li><li><a href=\"/wiki/Category:1980s_initial_public_offerings\" title=\"Category:1980s initial public offerings\">1980s initial public offerings</a></li><li><a href=\"/wiki/Category:American_brands\" title=\"Category:American brands\">American brands</a></li><li><a href=\"/wiki/Category:American_companies_established_in_1975\" title=\"Category:American companies established in 1975\">American companies established in 1975</a></li><li><a href=\"/wiki/Category:Business_software_companies\" title=\"Category:Business software companies\">Business software companies</a></li><li><a href=\"/wiki/Category:Cloud_computing_providers\" title=\"Category:Cloud computing providers\">Cloud computing providers</a></li><li><a href=\"/wiki/Category:Companies_based_in_Redmond,_Washington\" title=\"Category:Companies based in Redmond, Washington\">Companies based in Redmond, Washington</a></li><li><a href=\"/wiki/Category:Companies_in_the_Dow_Jones_Global_Titans_50\" title=\"Category:Companies in the Dow Jones Global Titans 50\">Companies in the Dow Jones Global Titans 50</a></li><li><a href=\"/wiki/Category:Companies_in_the_Dow_Jones_Industrial_Average\" title=\"Category:Companies in the Dow Jones Industrial Average\">Companies in the Dow Jones Industrial Average</a></li><li><a href=\"/wiki/Category:Companies_in_the_PRISM_network\" title=\"Category:Companies in the PRISM network\">Companies in the PRISM network</a></li><li><a href=\"/wiki/Category:Computer_companies_established_in_1975\" title=\"Category:Computer companies established in 1975\">Computer companies established in 1975</a></li><li><a href=\"/wiki/Category:Computer_companies_of_the_United_States\" title=\"Category:Computer companies of the United States\">Computer companies of the United States</a></li><li><a href=\"/wiki/Category:Computer_hardware_companies\" title=\"Category:Computer hardware companies\">Computer hardware companies</a></li><li><a href=\"/wiki/Category:Computer_systems_companies\" title=\"Category:Computer systems companies\">Computer systems companies</a></li><li><a href=\"/wiki/Category:Customer_relationship_management_software_companies\" title=\"Category:Customer relationship management software companies\">Customer relationship management software companies</a></li><li><a href=\"/wiki/Category:Electronics_companies_established_in_1975\" title=\"Category:Electronics companies established in 1975\">Electronics companies established in 1975</a></li><li><a href=\"/wiki/Category:Electronics_companies_of_the_United_States\" title=\"Category:Electronics companies of the United States\">Electronics companies of the United States</a></li><li><a href=\"/wiki/Category:ERP_software_companies\" title=\"Category:ERP software companies\">ERP software companies</a></li><li><a href=\"/wiki/Category:Mobile_phone_manufacturers\" title=\"Category:Mobile phone manufacturers\">Mobile phone manufacturers</a></li><li><a href=\"/wiki/Category:Multinational_companies_headquartered_in_the_United_States\" title=\"Category:Multinational companies headquartered in the United States\">Multinational companies headquartered in the United States</a></li><li><a href=\"/wiki/Category:Software_companies_based_in_Washington_(state)\" title=\"Category:Software companies based in Washington (state)\">Software companies based in Washington (state)</a></li><li><a href=\"/wiki/Category:Software_companies_established_in_1975\" title=\"Category:Software companies established in 1975\">Software companies established in 1975</a></li><li><a href=\"/wiki/Category:Software_companies_of_the_United_States\" title=\"Category:Software companies of the United States\">Software companies of the United States</a></li><li><a href=\"/wiki/Category:Supply_chain_software_companies\" title=\"Category:Supply chain software companies\">Supply chain software companies</a></li><li><a href=\"/wiki/Category:Technology_companies_established_in_1975\" title=\"Category:Technology companies established in 1975\">Technology companies established in 1975</a></li><li><a href=\"/wiki/Category:Technology_companies_of_the_United_States\" title=\"Category:Technology companies of the United States\">Technology companies of the United States</a></li><li><a href=\"/wiki/Category:Web_service_providers\" title=\"Category:Web service providers\">Web service providers</a></li></ul></div><div id=\"mw-hidden-catlinks\" class=\"mw-hidden-catlinks mw-hidden-cats-hidden\">Hidden categories: <ul><li><a href=\"/wiki/Category:Pages_with_non-numeric_formatnum_arguments\" title=\"Category:Pages with non-numeric formatnum arguments\">Pages with non-numeric formatnum arguments</a></li><li><a href=\"/wiki/Category:Webarchive_template_wayback_links\" title=\"Category:Webarchive template wayback links\">Webarchive template wayback links</a></li><li><a href=\"/wiki/Category:CS1_maint:_multiple_names:_authors_list\" title=\"Category:CS1 maint: multiple names: authors list\">CS1 maint: multiple names: authors list</a></li><li><a href=\"/wiki/Category:Articles_with_short_description\" title=\"Category:Articles with short description\">Articles with short description</a></li><li><a href=\"/wiki/Category:Short_description_matches_Wikidata\" title=\"Category:Short description matches Wikidata\">Short description matches Wikidata</a></li><li><a href=\"/wiki/Category:Wikipedia_pages_semi-protected_against_vandalism\" title=\"Category:Wikipedia pages semi-protected against vandalism\">Wikipedia pages semi-protected against vandalism</a></li><li><a href=\"/wiki/Category:Wikipedia_indefinitely_move-protected_pages\" title=\"Category:Wikipedia indefinitely move-protected pages\">Wikipedia indefinitely move-protected pages</a></li><li><a href=\"/wiki/Category:Use_American_English_from_May_2019\" title=\"Category:Use American English from May 2019\">Use American English from May 2019</a></li><li><a href=\"/wiki/Category:All_Wikipedia_articles_written_in_American_English\" title=\"Category:All Wikipedia articles written in American English\">All Wikipedia articles written in American English</a></li><li><a href=\"/wiki/Category:Use_mdy_dates_from_March_2024\" title=\"Category:Use mdy dates from March 2024\">Use mdy dates from March 2024</a></li><li><a href=\"/wiki/Category:Infobox_network_service_provider_ASN_same_as_Wikidata\" title=\"Category:Infobox network service provider ASN same as Wikidata\">Infobox network service provider ASN same as Wikidata</a></li><li><a href=\"/wiki/Category:Articles_containing_potentially_dated_statements_from_June_2023\" title=\"Category:Articles containing potentially dated statements from June 2023\">Articles containing potentially dated statements from June 2023</a></li><li><a href=\"/wiki/Category:All_articles_containing_potentially_dated_statements\" title=\"Category:All articles containing potentially dated statements\">All articles containing potentially dated statements</a></li><li><a href=\"/wiki/Category:Articles_containing_potentially_dated_statements_from_2015\" title=\"Category:Articles containing potentially dated statements from 2015\">Articles containing potentially dated statements from 2015</a></li><li><a href=\"/wiki/Category:Articles_containing_potentially_dated_statements_from_2023\" title=\"Category:Articles containing potentially dated statements from 2023\">Articles containing potentially dated statements from 2023</a></li><li><a href=\"/wiki/Category:All_accuracy_disputes\" title=\"Category:All accuracy disputes\">All accuracy disputes</a></li><li><a href=\"/wiki/Category:Articles_with_disputed_statements_from_May_2019\" title=\"Category:Articles with disputed statements from May 2019\">Articles with disputed statements from May 2019</a></li><li><a href=\"/wiki/Category:Articles_containing_potentially_dated_statements_from_January_2011\" title=\"Category:Articles containing potentially dated statements from January 2011\">Articles containing potentially dated statements from January 2011</a></li><li><a href=\"/wiki/Category:Wikipedia_articles_in_need_of_updating_from_March_2024\" title=\"Category:Wikipedia articles in need of updating from March 2024\">Wikipedia articles in need of updating from March 2024</a></li><li><a href=\"/wiki/Category:All_Wikipedia_articles_in_need_of_updating\" title=\"Category:All Wikipedia articles in need of updating\">All Wikipedia articles in need of updating</a></li><li><a href=\"/wiki/Category:OpenCorporates_groupings\" title=\"Category:OpenCorporates groupings\">OpenCorporates groupings</a></li><li><a href=\"/wiki/Category:Pages_using_Sister_project_links_with_wikidata_namespace_mismatch\" title=\"Category:Pages using Sister project links with wikidata namespace mismatch\">Pages using Sister project links with wikidata namespace mismatch</a></li><li><a href=\"/wiki/Category:Pages_using_Sister_project_links_with_hidden_wikidata\" title=\"Category:Pages using Sister project links with hidden wikidata\">Pages using Sister project links with hidden wikidata</a></li><li><a href=\"/wiki/Category:Coordinates_not_on_Wikidata\" title=\"Category:Coordinates not on Wikidata\">Coordinates not on Wikidata</a></li><li><a href=\"/wiki/Category:Articles_with_ISNI_identifiers\" title=\"Category:Articles with ISNI identifiers\">Articles with ISNI identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_VIAF_identifiers\" title=\"Category:Articles with VIAF identifiers\">Articles with VIAF identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_BIBSYS_identifiers\" title=\"Category:Articles with BIBSYS identifiers\">Articles with BIBSYS identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_BNE_identifiers\" title=\"Category:Articles with BNE identifiers\">Articles with BNE identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_BNF_identifiers\" title=\"Category:Articles with BNF identifiers\">Articles with BNF identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_BNFdata_identifiers\" title=\"Category:Articles with BNFdata identifiers\">Articles with BNFdata identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_CANTICN_identifiers\" title=\"Category:Articles with CANTICN identifiers\">Articles with CANTICN identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_GND_identifiers\" title=\"Category:Articles with GND identifiers\">Articles with GND identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_J9U_identifiers\" title=\"Category:Articles with J9U identifiers\">Articles with J9U identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_LCCN_identifiers\" title=\"Category:Articles with LCCN identifiers\">Articles with LCCN identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_Libris_identifiers\" title=\"Category:Articles with Libris identifiers\">Articles with Libris identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_LNB_identifiers\" title=\"Category:Articles with LNB identifiers\">Articles with LNB identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_NDL_identifiers\" title=\"Category:Articles with NDL identifiers\">Articles with NDL identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_NKC_identifiers\" title=\"Category:Articles with NKC identifiers\">Articles with NKC identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_NLA_identifiers\" title=\"Category:Articles with NLA identifiers\">Articles with NLA identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_NLG_identifiers\" title=\"Category:Articles with NLG identifiers\">Articles with NLG identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_NSK_identifiers\" title=\"Category:Articles with NSK identifiers\">Articles with NSK identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_PLWABN_identifiers\" title=\"Category:Articles with PLWABN identifiers\">Articles with PLWABN identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_PortugalA_identifiers\" title=\"Category:Articles with PortugalA identifiers\">Articles with PortugalA identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_CINII_identifiers\" title=\"Category:Articles with CINII identifiers\">Articles with CINII identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_ULAN_identifiers\" title=\"Category:Articles with ULAN identifiers\">Articles with ULAN identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_Trove_identifiers\" title=\"Category:Articles with Trove identifiers\">Articles with Trove identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_EMU_identifiers\" title=\"Category:Articles with EMU identifiers\">Articles with EMU identifiers</a></li><li><a href=\"/wiki/Category:Articles_with_SUDOC_identifiers\" title=\"Category:Articles with SUDOC identifiers\">Articles with SUDOC identifiers</a></li></ul></div></div>\n\t\t\t\t</div>\n\t\t\t</main>\n\n\t\t</div>\n\t\t<div class=\"mw-footer-container\">\n\n<footer id=\"footer\" class=\"mw-footer\" role=\"contentinfo\" >\n\t<ul id=\"footer-info\">\n\t<li id=\"footer-info-lastmod\"> This page was last edited on 13 March 2024, at 14:21<span class=\"anonymous-show\">&#160;(UTC)</span>.</li>\n\t<li id=\"footer-info-copyright\">Text is available under the <a rel=\"license\" href=\"//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License\">Creative Commons Attribution-ShareAlike License 4.0</a><a rel=\"license\" href=\"//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License\" style=\"display:none;\"></a>;\nadditional terms may apply. By using this site, you agree to the <a href=\"//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use\">Terms of Use</a> and <a href=\"//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy\">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a href=\"//www.wikimediafoundation.org/\">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li>\n</ul>\n\n\t<ul id=\"footer-places\">\n\t<li id=\"footer-places-privacy\"><a href=\"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy\">Privacy policy</a></li>\n\t<li id=\"footer-places-about\"><a href=\"/wiki/Wikipedia:About\">About Wikipedia</a></li>\n\t<li id=\"footer-places-disclaimers\"><a href=\"/wiki/Wikipedia:General_disclaimer\">Disclaimers</a></li>\n\t<li id=\"footer-places-contact\"><a href=\"//en.wikipedia.org/wiki/Wikipedia:Contact_us\">Contact Wikipedia</a></li>\n\t<li id=\"footer-places-wm-codeofconduct\"><a href=\"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct\">Code of Conduct</a></li>\n\t<li id=\"footer-places-developers\"><a href=\"https://developer.wikimedia.org\">Developers</a></li>\n\t<li id=\"footer-places-statslink\"><a href=\"https://stats.wikimedia.org/#/en.wikipedia.org\">Statistics</a></li>\n\t<li id=\"footer-places-cookiestatement\"><a href=\"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement\">Cookie statement</a></li>\n\t<li id=\"footer-places-mobileview\"><a href=\"//en.m.wikipedia.org/w/index.php?title=Microsoft&amp;mobileaction=toggle_view_mobile\" class=\"noprint stopMobileRedirectToggle\">Mobile view</a></li>\n</ul>\n\n\t<ul id=\"footer-icons\" class=\"noprint\">\n\t<li id=\"footer-copyrightico\"><a href=\"https://wikimediafoundation.org/\"><img src=\"/static/images/footer/wikimedia-button.png\" srcset=\"/static/images/footer/wikimedia-button-1.5x.png 1.5x, /static/images/footer/wikimedia-button-2x.png 2x\" width=\"88\" height=\"31\" alt=\"Wikimedia Foundation\" loading=\"lazy\" /></a></li>\n\t<li id=\"footer-poweredbyico\"><a href=\"https://www.mediawiki.org/\"><img src=\"/static/images/footer/poweredby_mediawiki_88x31.png\" alt=\"Powered by MediaWiki\" srcset=\"/static/images/footer/poweredby_mediawiki_132x47.png 1.5x, /static/images/footer/poweredby_mediawiki_176x62.png 2x\" width=\"88\" height=\"31\" loading=\"lazy\"></a></li>\n</ul>\n\n</footer>\n\n\t\t</div>\n\t</div>\n</div>\n<div class=\"vector-settings\" id=\"p-dock-bottom\">\n\t<ul>\n\t\t<li>\n\t\t<button class=\"cdx-button cdx-button--icon-only vector-limited-width-toggle\" id=\"\"><span class=\"vector-icon mw-ui-icon-fullScreen mw-ui-icon-wikimedia-fullScreen\"></span>\n\n<span>Toggle limited content width</span>\n</button>\n</li>\n\t</ul>\n</div>\n<script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({\"wgHostname\":\"mw-web.codfw.main-65d56d456f-h22n2\",\"wgBackendResponseTime\":189,\"wgPageParseReport\":{\"limitreport\":{\"cputime\":\"3.073\",\"walltime\":\"3.517\",\"ppvisitednodes\":{\"value\":21090,\"limit\":1000000},\"postexpandincludesize\":{\"value\":812559,\"limit\":2097152},\"templateargumentsize\":{\"value\":61194,\"limit\":2097152},\"expansiondepth\":{\"value\":28,\"limit\":100},\"expensivefunctioncount\":{\"value\":44,\"limit\":500},\"unstrip-depth\":{\"value\":1,\"limit\":20},\"unstrip-size\":{\"value\":953947,\"limit\":5000000},\"entityaccesscount\":{\"value\":1,\"limit\":400},\"timingprofile\":[\"100.00% 2986.514      1 -total\",\" 57.75% 1724.621      2 Template:Reflist\",\" 33.83% 1010.329    192 Template:Cite_web\",\" 15.30%  456.945      2 Template:Infobox\",\" 11.90%  355.326      1 Template:Infobox_company\",\" 10.53%  314.527     66 Template:Cite_news\",\"  4.21%  125.653      1 Template:Short_description\",\"  3.99%  119.297      4 Template:Unbulleted_list\",\"  3.96%  118.287      1 Template:Infobox_network_service_provider\",\"  3.37%  100.568      3 Template:Ifnumber\"]},\"scribunto\":{\"limitreport-timeusage\":{\"value\":\"1.924\",\"limit\":\"10.000\"},\"limitreport-memusage\":{\"value\":15258299,\"limit\":52428800},\"limitreport-profile\":[[\"?\",\"340\",\"15.9\"],[\"dataWrapper \\u003Cmw.lua:672\\u003E\",\"280\",\"13.1\"],[\"MediaWiki\\\\Extension\\\\Scribunto\\\\Engines\\\\LuaSandbox\\\\LuaSandboxCallback::gsub\",\"240\",\"11.2\"],[\"MediaWiki\\\\Extension\\\\Scribunto\\\\Engines\\\\LuaSandbox\\\\LuaSandboxCallback::callParserFunction\",\"180\",\"8.4\"],[\"recursiveClone \\u003CmwInit.lua:41\\u003E\",\"80\",\"3.7\"],[\"MediaWiki\\\\Extension\\\\Scribunto\\\\Engines\\\\LuaSandbox\\\\LuaSandboxCallback::getExpandedArgument\",\"80\",\"3.7\"],[\"MediaWiki\\\\Extension\\\\Scribunto\\\\Engines\\\\LuaSandbox\\\\LuaSandboxCallback::getEntityStatements\",\"60\",\"2.8\"],[\"makeMessage \\u003Cmw.message.lua:76\\u003E\",\"60\",\"2.8\"],[\"MediaWiki\\\\Extension\\\\Scribunto\\\\Engines\\\\LuaSandbox\\\\LuaSandboxCallback::unstripNoWiki\",\"40\",\"1.9\"],[\"\\u003Cmw.title.lua:50\\u003E\",\"40\",\"1.9\"],[\"[others]\",\"740\",\"34.6\"]]},\"cachereport\":{\"origin\":\"mw-web.codfw.main-65d56d456f-rtgdj\",\"timestamp\":\"20240313194038\",\"ttl\":2592000,\"transientcontent\":false}}});});</script>\n<script type=\"application/ld+json\">{\"@context\":\"https:\\/\\/schema.org\",\"@type\":\"Article\",\"name\":\"Microsoft\",\"url\":\"https:\\/\\/en.wikipedia.org\\/wiki\\/Microsoft\",\"sameAs\":\"http:\\/\\/www.wikidata.org\\/entity\\/Q2283\",\"mainEntity\":\"http:\\/\\/www.wikidata.org\\/entity\\/Q2283\",\"author\":{\"@type\":\"Organization\",\"name\":\"Contributors to Wikimedia projects\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Wikimedia Foundation, Inc.\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\/\\/www.wikimedia.org\\/static\\/images\\/wmf-hor-googpub.png\"}},\"datePublished\":\"2001-11-03T12:21:01Z\",\"dateModified\":\"2024-03-13T14:21:39Z\",\"image\":\"https:\\/\\/upload.wikimedia.org\\/wikipedia\\/commons\\/3\\/30\\/Building92microsoft.jpg\",\"headline\":\"American multinational technology corporation\"}</script>\n</body>\n</html>\n"
  },
  {
    "path": "packages/markitdown/tests/test_module_misc.py",
    "content": "#!/usr/bin/env python3 -m pytest\nimport io\nimport os\nimport re\nimport shutil\nimport pytest\nfrom unittest.mock import MagicMock\n\nfrom markitdown._uri_utils import parse_data_uri, file_uri_to_path\n\nfrom markitdown import (\n    MarkItDown,\n    UnsupportedFormatException,\n    FileConversionException,\n    StreamInfo,\n)\n\n# This file contains module tests that are not directly tested by the FileTestVectors.\n# This includes things like helper functions and runtime conversion options\n# (e.g., LLM clients, exiftool path, transcription services, etc.)\n\nskip_remote = (\n    True if os.environ.get(\"GITHUB_ACTIONS\") else False\n)  # Don't run these tests in CI\n\n\n# Don't run the llm tests without a key and the client library\nskip_llm = False if os.environ.get(\"OPENAI_API_KEY\") else True\ntry:\n    import openai\nexcept ModuleNotFoundError:\n    skip_llm = True\n\n# Skip exiftool tests if not installed\nskip_exiftool = shutil.which(\"exiftool\") is None\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\n\nJPG_TEST_EXIFTOOL = {\n    \"Author\": \"AutoGen Authors\",\n    \"Title\": \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n    \"Description\": \"AutoGen enables diverse LLM-based applications\",\n    \"ImageSize\": \"1615x1967\",\n    \"DateTimeOriginal\": \"2024:03:14 22:10:00\",\n}\n\nMP3_TEST_EXIFTOOL = {\n    \"Title\": \"f67a499e-a7d0-4ca3-a49b-358bd934ae3e\",\n    \"Artist\": \"Artist Name Test String\",\n    \"Album\": \"Album Name Test String\",\n    \"SampleRate\": \"48000\",\n}\n\nPDF_TEST_URL = \"https://arxiv.org/pdf/2308.08155v2.pdf\"\nPDF_TEST_STRINGS = [\n    \"While there is contemporaneous exploration of multi-agent approaches\"\n]\n\nYOUTUBE_TEST_URL = \"https://www.youtube.com/watch?v=V2qZ_lgxTzg\"\nYOUTUBE_TEST_STRINGS = [\n    \"## AutoGen FULL Tutorial with Python (Step-By-Step)\",\n    \"This is an intermediate tutorial for installing and using AutoGen locally\",\n    \"PT15M4S\",\n    \"the model we're going to be using today is GPT 3.5 turbo\",  # From the transcript\n]\n\nDOCX_COMMENT_TEST_STRINGS = [\n    \"314b0a30-5b04-470b-b9f7-eed2c2bec74a\",\n    \"49e168b7-d2ae-407f-a055-2167576f39a1\",\n    \"## d666f1f7-46cb-42bd-9a39-9a39cf2a509f\",\n    \"# Abstract\",\n    \"# Introduction\",\n    \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n    \"This is a test comment. 12df-321a\",\n    \"Yet another comment in the doc. 55yiyi-asd09\",\n]\n\nBLOG_TEST_URL = \"https://microsoft.github.io/autogen/blog/2023/04/21/LLM-tuning-math\"\nBLOG_TEST_STRINGS = [\n    \"Large language models (LLMs) are powerful tools that can generate natural language texts for various applications, such as chatbots, summarization, translation, and more. GPT-4 is currently the state of the art LLM in the world. Is model selection irrelevant? What about inference parameters?\",\n    \"an example where high cost can easily prevent a generic complex\",\n]\n\nLLM_TEST_STRINGS = [\n    \"5bda1dd6\",\n]\n\nPPTX_TEST_STRINGS = [\n    \"2cdda5c8-e50e-4db4-b5f0-9722a649f455\",\n    \"04191ea8-5c73-4215-a1d3-1cfb43aaaf12\",\n    \"44bf7d06-5e7a-4a40-a2e1-a2e42ef28c8a\",\n    \"1b92870d-e3b5-4e65-8153-919f4ff45592\",\n    \"AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\",\n    \"a3f6004b-6f4f-4ea8-bee3-3741f4dc385f\",  # chart title\n    \"2003\",  # chart value\n]\n\n\n# --- Helper Functions ---\ndef validate_strings(result, expected_strings, exclude_strings=None):\n    \"\"\"Validate presence or absence of specific strings.\"\"\"\n    text_content = result.text_content.replace(\"\\\\\", \"\")\n    for string in expected_strings:\n        assert string in text_content\n    if exclude_strings:\n        for string in exclude_strings:\n            assert string not in text_content\n\n\ndef test_stream_info_operations() -> None:\n    \"\"\"Test operations performed on StreamInfo objects.\"\"\"\n\n    stream_info_original = StreamInfo(\n        mimetype=\"mimetype.1\",\n        extension=\"extension.1\",\n        charset=\"charset.1\",\n        filename=\"filename.1\",\n        local_path=\"local_path.1\",\n        url=\"url.1\",\n    )\n\n    # Check updating all attributes by keyword\n    keywords = [\"mimetype\", \"extension\", \"charset\", \"filename\", \"local_path\", \"url\"]\n    for keyword in keywords:\n        updated_stream_info = stream_info_original.copy_and_update(\n            **{keyword: f\"{keyword}.2\"}\n        )\n\n        # Make sure the targted attribute is updated\n        assert getattr(updated_stream_info, keyword) == f\"{keyword}.2\"\n\n        # Make sure the other attributes are unchanged\n        for k in keywords:\n            if k != keyword:\n                assert getattr(stream_info_original, k) == getattr(\n                    updated_stream_info, k\n                )\n\n    # Check updating all attributes by passing a new StreamInfo object\n    keywords = [\"mimetype\", \"extension\", \"charset\", \"filename\", \"local_path\", \"url\"]\n    for keyword in keywords:\n        updated_stream_info = stream_info_original.copy_and_update(\n            StreamInfo(**{keyword: f\"{keyword}.2\"})\n        )\n\n        # Make sure the targted attribute is updated\n        assert getattr(updated_stream_info, keyword) == f\"{keyword}.2\"\n\n        # Make sure the other attributes are unchanged\n        for k in keywords:\n            if k != keyword:\n                assert getattr(stream_info_original, k) == getattr(\n                    updated_stream_info, k\n                )\n\n    # Check mixing and matching\n    updated_stream_info = stream_info_original.copy_and_update(\n        StreamInfo(extension=\"extension.2\", filename=\"filename.2\"),\n        mimetype=\"mimetype.3\",\n        charset=\"charset.3\",\n    )\n    assert updated_stream_info.extension == \"extension.2\"\n    assert updated_stream_info.filename == \"filename.2\"\n    assert updated_stream_info.mimetype == \"mimetype.3\"\n    assert updated_stream_info.charset == \"charset.3\"\n    assert updated_stream_info.local_path == \"local_path.1\"\n    assert updated_stream_info.url == \"url.1\"\n\n    # Check multiple StreamInfo objects\n    updated_stream_info = stream_info_original.copy_and_update(\n        StreamInfo(extension=\"extension.4\", filename=\"filename.5\"),\n        StreamInfo(mimetype=\"mimetype.6\", charset=\"charset.7\"),\n    )\n    assert updated_stream_info.extension == \"extension.4\"\n    assert updated_stream_info.filename == \"filename.5\"\n    assert updated_stream_info.mimetype == \"mimetype.6\"\n    assert updated_stream_info.charset == \"charset.7\"\n    assert updated_stream_info.local_path == \"local_path.1\"\n    assert updated_stream_info.url == \"url.1\"\n\n\ndef test_data_uris() -> None:\n    # Test basic parsing of data URIs\n    data_uri = \"data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type == \"text/plain\"\n    assert len(attributes) == 0\n    assert data == b\"Hello, World!\"\n\n    data_uri = \"data:base64,SGVsbG8sIFdvcmxkIQ==\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type is None\n    assert len(attributes) == 0\n    assert data == b\"Hello, World!\"\n\n    data_uri = \"data:text/plain;charset=utf-8;base64,SGVsbG8sIFdvcmxkIQ==\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type == \"text/plain\"\n    assert len(attributes) == 1\n    assert attributes[\"charset\"] == \"utf-8\"\n    assert data == b\"Hello, World!\"\n\n    data_uri = \"data:,Hello%2C%20World%21\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type is None\n    assert len(attributes) == 0\n    assert data == b\"Hello, World!\"\n\n    data_uri = \"data:text/plain,Hello%2C%20World%21\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type == \"text/plain\"\n    assert len(attributes) == 0\n    assert data == b\"Hello, World!\"\n\n    data_uri = \"data:text/plain;charset=utf-8,Hello%2C%20World%21\"\n    mime_type, attributes, data = parse_data_uri(data_uri)\n    assert mime_type == \"text/plain\"\n    assert len(attributes) == 1\n    assert attributes[\"charset\"] == \"utf-8\"\n    assert data == b\"Hello, World!\"\n\n\ndef test_file_uris() -> None:\n    # Test file URI with an empty host\n    file_uri = \"file:///path/to/file.txt\"\n    netloc, path = file_uri_to_path(file_uri)\n    assert netloc is None\n    assert path == \"/path/to/file.txt\"\n\n    # Test file URI with no host\n    file_uri = \"file:/path/to/file.txt\"\n    netloc, path = file_uri_to_path(file_uri)\n    assert netloc is None\n    assert path == \"/path/to/file.txt\"\n\n    # Test file URI with localhost\n    file_uri = \"file://localhost/path/to/file.txt\"\n    netloc, path = file_uri_to_path(file_uri)\n    assert netloc == \"localhost\"\n    assert path == \"/path/to/file.txt\"\n\n    # Test file URI with query parameters\n    file_uri = \"file:///path/to/file.txt?param=value\"\n    netloc, path = file_uri_to_path(file_uri)\n    assert netloc is None\n    assert path == \"/path/to/file.txt\"\n\n    # Test file URI with fragment\n    file_uri = \"file:///path/to/file.txt#fragment\"\n    netloc, path = file_uri_to_path(file_uri)\n    assert netloc is None\n    assert path == \"/path/to/file.txt\"\n\n\ndef test_docx_comments() -> None:\n    # Test DOCX processing, with comments and setting style_map on init\n    markitdown_with_style_map = MarkItDown(style_map=\"comment-reference => \")\n    result = markitdown_with_style_map.convert(\n        os.path.join(TEST_FILES_DIR, \"test_with_comment.docx\")\n    )\n    validate_strings(result, DOCX_COMMENT_TEST_STRINGS)\n\n\ndef test_docx_equations() -> None:\n    markitdown = MarkItDown()\n    docx_file = os.path.join(TEST_FILES_DIR, \"equations.docx\")\n    result = markitdown.convert(docx_file)\n\n    # Check for inline equation m=1 (wrapped with single $) is present\n    assert \"$m=1$\" in result.text_content, \"Inline equation $m=1$ not found\"\n\n    # Find block equations wrapped with double $$ and check if they are present\n    block_equations = re.findall(r\"\\$\\$(.+?)\\$\\$\", result.text_content)\n    assert block_equations, \"No block equations found in the document.\"\n\n\ndef test_input_as_strings() -> None:\n    markitdown = MarkItDown()\n\n    # Test input from a stream\n    input_data = b\"<html><body><h1>Test</h1></body></html>\"\n    result = markitdown.convert_stream(io.BytesIO(input_data))\n    assert \"# Test\" in result.text_content\n\n    # Test input with leading blank characters\n    input_data = b\"   \\n\\n\\n<html><body><h1>Test</h1></body></html>\"\n    result = markitdown.convert_stream(io.BytesIO(input_data))\n    assert \"# Test\" in result.text_content\n\n\ndef test_doc_rlink() -> None:\n    # Test for: CVE-2025-11849\n    markitdown = MarkItDown()\n\n    # Document with rlink\n    docx_file = os.path.join(TEST_FILES_DIR, \"rlink.docx\")\n\n    # Directory containing the target rlink file\n    rlink_tmp_dir = os.path.abspath(os.sep + \"tmp\")\n\n    # Ensure the tmp directory exists\n    if not os.path.exists(rlink_tmp_dir):\n        pytest.skip(f\"Skipping rlink test; {rlink_tmp_dir} directory does not exist.\")\n        return\n\n    rlink_file_path = os.path.join(rlink_tmp_dir, \"test_rlink.txt\")\n    rlink_content = \"de658225-569e-4e3d-9ed2-cfb6abf927fc\"\n    b64_prefix = (\n        \"ZGU2NTgyMjUtNTY5ZS00ZTNkLTllZDItY2ZiNmFiZjk\"  # base64 prefix of rlink_content\n    )\n\n    if os.path.exists(rlink_file_path):\n        with open(rlink_file_path, \"r\", encoding=\"utf-8\") as f:\n            existing_content = f.read()\n            if existing_content != rlink_content:\n                raise ValueError(\n                    f\"Existing {rlink_file_path} content does not match expected content.\"\n                )\n    else:\n        with open(rlink_file_path, \"w\", encoding=\"utf-8\") as f:\n            f.write(rlink_content)\n\n    try:\n        result = markitdown.convert(docx_file, keep_data_uris=True).text_content\n        assert (\n            b64_prefix not in result\n        )  # Make sure the target file was NOT embedded in the output\n    finally:\n        os.remove(rlink_file_path)\n\n\n@pytest.mark.skipif(\n    skip_remote,\n    reason=\"do not run tests that query external urls\",\n)\ndef test_markitdown_remote() -> None:\n    markitdown = MarkItDown()\n\n    # By URL\n    result = markitdown.convert(PDF_TEST_URL)\n    for test_string in PDF_TEST_STRINGS:\n        assert test_string in result.text_content\n\n    # Youtube\n    # result = markitdown.convert(YOUTUBE_TEST_URL)\n    # for test_string in YOUTUBE_TEST_STRINGS:\n    #    assert test_string in result.text_content\n\n\n@pytest.mark.skipif(\n    skip_remote,\n    reason=\"do not run remotely run speech transcription tests\",\n)\ndef test_speech_transcription() -> None:\n    markitdown = MarkItDown()\n\n    # Test WAV files, MP3 and M4A files\n    for file_name in [\"test.wav\", \"test.mp3\", \"test.m4a\"]:\n        result = markitdown.convert(os.path.join(TEST_FILES_DIR, file_name))\n        result_lower = result.text_content.lower()\n        assert (\n            (\"1\" in result_lower or \"one\" in result_lower)\n            and (\"2\" in result_lower or \"two\" in result_lower)\n            and (\"3\" in result_lower or \"three\" in result_lower)\n            and (\"4\" in result_lower or \"four\" in result_lower)\n            and (\"5\" in result_lower or \"five\" in result_lower)\n        )\n\n\ndef test_exceptions() -> None:\n    # Check that an exception is raised when trying to convert an unsupported format\n    markitdown = MarkItDown()\n    with pytest.raises(UnsupportedFormatException):\n        markitdown.convert(os.path.join(TEST_FILES_DIR, \"random.bin\"))\n\n    # Check that an exception is raised when trying to convert a file that is corrupted\n    with pytest.raises(FileConversionException) as exc_info:\n        markitdown.convert(\n            os.path.join(TEST_FILES_DIR, \"random.bin\"), file_extension=\".pptx\"\n        )\n    assert len(exc_info.value.attempts) == 1\n    assert type(exc_info.value.attempts[0].converter).__name__ == \"PptxConverter\"\n\n\n@pytest.mark.skipif(\n    skip_exiftool,\n    reason=\"do not run if exiftool is not installed\",\n)\ndef test_markitdown_exiftool() -> None:\n    which_exiftool = shutil.which(\"exiftool\")\n    assert which_exiftool is not None\n\n    # Test explicitly setting the location of exiftool\n    markitdown = MarkItDown(exiftool_path=which_exiftool)\n    result = markitdown.convert(os.path.join(TEST_FILES_DIR, \"test.jpg\"))\n    for key in JPG_TEST_EXIFTOOL:\n        target = f\"{key}: {JPG_TEST_EXIFTOOL[key]}\"\n        assert target in result.text_content\n\n    # Test setting the exiftool path through an environment variable\n    os.environ[\"EXIFTOOL_PATH\"] = which_exiftool\n    markitdown = MarkItDown()\n    result = markitdown.convert(os.path.join(TEST_FILES_DIR, \"test.jpg\"))\n    for key in JPG_TEST_EXIFTOOL:\n        target = f\"{key}: {JPG_TEST_EXIFTOOL[key]}\"\n        assert target in result.text_content\n\n    # Test some other media types\n    result = markitdown.convert(os.path.join(TEST_FILES_DIR, \"test.mp3\"))\n    for key in MP3_TEST_EXIFTOOL:\n        target = f\"{key}: {MP3_TEST_EXIFTOOL[key]}\"\n        assert target in result.text_content\n\n\ndef test_markitdown_llm_parameters() -> None:\n    \"\"\"Test that LLM parameters are correctly passed to the client.\"\"\"\n    mock_client = MagicMock()\n    mock_response = MagicMock()\n    mock_response.choices = [\n        MagicMock(\n            message=MagicMock(\n                content=\"Test caption with red circle and blue square 5bda1dd6\"\n            )\n        )\n    ]\n    mock_client.chat.completions.create.return_value = mock_response\n\n    test_prompt = \"You are a professional test prompt.\"\n    markitdown = MarkItDown(\n        llm_client=mock_client, llm_model=\"gpt-4o\", llm_prompt=test_prompt\n    )\n\n    # Test image file\n    markitdown.convert(os.path.join(TEST_FILES_DIR, \"test_llm.jpg\"))\n\n    # Verify the prompt was passed to the OpenAI API\n    assert mock_client.chat.completions.create.called\n    call_args = mock_client.chat.completions.create.call_args\n    messages = call_args[1][\"messages\"]\n    assert len(messages) == 1\n    assert messages[0][\"content\"][0][\"text\"] == test_prompt\n\n    # Reset the mock for the next test\n    mock_client.chat.completions.create.reset_mock()\n\n    # TODO: may only use one test after the llm caption method duplicate has been removed:\n    # https://github.com/microsoft/markitdown/pull/1254\n    # Test PPTX file\n    markitdown.convert(os.path.join(TEST_FILES_DIR, \"test.pptx\"))\n\n    # Verify the prompt was passed to the OpenAI API for PPTX images too\n    assert mock_client.chat.completions.create.called\n    call_args = mock_client.chat.completions.create.call_args\n    messages = call_args[1][\"messages\"]\n    assert len(messages) == 1\n    assert messages[0][\"content\"][0][\"text\"] == test_prompt\n\n\n@pytest.mark.skipif(\n    skip_llm,\n    reason=\"do not run llm tests without a key\",\n)\ndef test_markitdown_llm() -> None:\n    client = openai.OpenAI()\n    markitdown = MarkItDown(llm_client=client, llm_model=\"gpt-4o\")\n\n    result = markitdown.convert(os.path.join(TEST_FILES_DIR, \"test_llm.jpg\"))\n    for test_string in LLM_TEST_STRINGS:\n        assert test_string in result.text_content\n\n    # This is not super precise. It would also accept \"red square\", \"blue circle\",\n    # \"the square is not blue\", etc. But it's sufficient for this test.\n    for test_string in [\"red\", \"circle\", \"blue\", \"square\"]:\n        assert test_string in result.text_content.lower()\n\n    # Images embedded in PPTX files\n    result = markitdown.convert(os.path.join(TEST_FILES_DIR, \"test.pptx\"))\n    # LLM Captions are included\n    for test_string in LLM_TEST_STRINGS:\n        assert test_string in result.text_content\n    # Standard alt text is included\n    validate_strings(result, PPTX_TEST_STRINGS)\n\n\nif __name__ == \"__main__\":\n    \"\"\"Runs this file's tests from the command line.\"\"\"\n    for test in [\n        test_stream_info_operations,\n        test_data_uris,\n        test_file_uris,\n        test_docx_comments,\n        test_input_as_strings,\n        test_markitdown_remote,\n        test_speech_transcription,\n        test_exceptions,\n        test_doc_rlink,\n        test_markitdown_exiftool,\n        test_markitdown_llm_parameters,\n        test_markitdown_llm,\n    ]:\n        print(f\"Running {test.__name__}...\", end=\"\")\n        test()\n        print(\"OK\")\n    print(\"All tests passed!\")\n"
  },
  {
    "path": "packages/markitdown/tests/test_module_vectors.py",
    "content": "#!/usr/bin/env python3 -m pytest\nimport os\nimport time\nimport pytest\nimport base64\n\nfrom pathlib import Path\n\nif __name__ == \"__main__\":\n    from _test_vectors import GENERAL_TEST_VECTORS, DATA_URI_TEST_VECTORS\nelse:\n    from ._test_vectors import GENERAL_TEST_VECTORS, DATA_URI_TEST_VECTORS\n\nfrom markitdown import (\n    MarkItDown,\n    StreamInfo,\n)\n\nskip_remote = (\n    True if os.environ.get(\"GITHUB_ACTIONS\") else False\n)  # Don't run these tests in CI\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\nTEST_FILES_URL = \"https://raw.githubusercontent.com/microsoft/markitdown/refs/heads/main/packages/markitdown/tests/test_files\"\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_guess_stream_info(test_vector):\n    \"\"\"Test the ability to guess stream info.\"\"\"\n    markitdown = MarkItDown()\n\n    local_path = os.path.join(TEST_FILES_DIR, test_vector.filename)\n    expected_extension = os.path.splitext(test_vector.filename)[1]\n\n    with open(local_path, \"rb\") as stream:\n        guesses = markitdown._get_stream_info_guesses(\n            stream,\n            base_guess=StreamInfo(\n                filename=os.path.basename(test_vector.filename),\n                local_path=local_path,\n                extension=expected_extension,\n            ),\n        )\n\n        # For some limited exceptions, we can't guarantee the exact\n        # mimetype or extension, so we'll special-case them here.\n        if test_vector.filename in [\n            \"test_outlook_msg.msg\",\n        ]:\n            return\n\n        assert guesses[0].mimetype == test_vector.mimetype\n        assert guesses[0].extension == expected_extension\n        assert guesses[0].charset == test_vector.charset\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_local(test_vector):\n    \"\"\"Test the conversion of a local file.\"\"\"\n    markitdown = MarkItDown()\n\n    result = markitdown.convert(\n        os.path.join(TEST_FILES_DIR, test_vector.filename), url=test_vector.url\n    )\n    for string in test_vector.must_include:\n        assert string in result.markdown\n    for string in test_vector.must_not_include:\n        assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_stream_with_hints(test_vector):\n    \"\"\"Test the conversion of a stream with full stream info.\"\"\"\n    markitdown = MarkItDown()\n\n    stream_info = StreamInfo(\n        extension=os.path.splitext(test_vector.filename)[1],\n        mimetype=test_vector.mimetype,\n        charset=test_vector.charset,\n    )\n\n    with open(os.path.join(TEST_FILES_DIR, test_vector.filename), \"rb\") as stream:\n        result = markitdown.convert(\n            stream, stream_info=stream_info, url=test_vector.url\n        )\n        for string in test_vector.must_include:\n            assert string in result.markdown\n        for string in test_vector.must_not_include:\n            assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_stream_without_hints(test_vector):\n    \"\"\"Test the conversion of a stream with no stream info.\"\"\"\n    markitdown = MarkItDown()\n\n    with open(os.path.join(TEST_FILES_DIR, test_vector.filename), \"rb\") as stream:\n        result = markitdown.convert(stream, url=test_vector.url)\n        for string in test_vector.must_include:\n            assert string in result.markdown\n        for string in test_vector.must_not_include:\n            assert string not in result.markdown\n\n\n@pytest.mark.skipif(\n    skip_remote,\n    reason=\"do not run tests that query external urls\",\n)\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_http_uri(test_vector):\n    \"\"\"Test the conversion of an HTTP:// or HTTPS:// URI.\"\"\"\n    markitdown = MarkItDown()\n\n    time.sleep(1)  # Ensure we don't hit rate limits\n\n    result = markitdown.convert(\n        TEST_FILES_URL + \"/\" + test_vector.filename,\n        url=test_vector.url,  # Mock where this file would be found\n    )\n    for string in test_vector.must_include:\n        assert string in result.markdown\n    for string in test_vector.must_not_include:\n        assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_file_uri(test_vector):\n    \"\"\"Test the conversion of a file:// URI.\"\"\"\n    markitdown = MarkItDown()\n\n    result = markitdown.convert(\n        Path(os.path.join(TEST_FILES_DIR, test_vector.filename)).as_uri(),\n        url=test_vector.url,\n    )\n    for string in test_vector.must_include:\n        assert string in result.markdown\n    for string in test_vector.must_not_include:\n        assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", GENERAL_TEST_VECTORS)\ndef test_convert_data_uri(test_vector):\n    \"\"\"Test the conversion of a data URI.\"\"\"\n    markitdown = MarkItDown()\n\n    data = \"\"\n    with open(os.path.join(TEST_FILES_DIR, test_vector.filename), \"rb\") as stream:\n        data = base64.b64encode(stream.read()).decode(\"utf-8\")\n    mimetype = test_vector.mimetype\n    data_uri = f\"data:{mimetype};base64,{data}\"\n\n    result = markitdown.convert(\n        data_uri,\n        url=test_vector.url,\n    )\n    for string in test_vector.must_include:\n        assert string in result.markdown\n    for string in test_vector.must_not_include:\n        assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", DATA_URI_TEST_VECTORS)\ndef test_convert_keep_data_uris(test_vector):\n    \"\"\"Test API functionality when keep_data_uris is enabled\"\"\"\n    markitdown = MarkItDown()\n\n    # Test local file conversion\n    result = markitdown.convert(\n        os.path.join(TEST_FILES_DIR, test_vector.filename),\n        keep_data_uris=True,\n        url=test_vector.url,\n    )\n\n    for string in test_vector.must_include:\n        assert string in result.markdown\n    for string in test_vector.must_not_include:\n        assert string not in result.markdown\n\n\n@pytest.mark.parametrize(\"test_vector\", DATA_URI_TEST_VECTORS)\ndef test_convert_stream_keep_data_uris(test_vector):\n    \"\"\"Test the conversion of a stream with no stream info.\"\"\"\n    markitdown = MarkItDown()\n\n    stream_info = StreamInfo(\n        extension=os.path.splitext(test_vector.filename)[1],\n        mimetype=test_vector.mimetype,\n        charset=test_vector.charset,\n    )\n\n    with open(os.path.join(TEST_FILES_DIR, test_vector.filename), \"rb\") as stream:\n        result = markitdown.convert(\n            stream, stream_info=stream_info, keep_data_uris=True, url=test_vector.url\n        )\n\n        for string in test_vector.must_include:\n            assert string in result.markdown\n        for string in test_vector.must_not_include:\n            assert string not in result.markdown\n\n\nif __name__ == \"__main__\":\n    \"\"\"Runs this file's tests from the command line.\"\"\"\n\n    # General tests\n    for test_function in [\n        test_guess_stream_info,\n        test_convert_local,\n        test_convert_stream_with_hints,\n        test_convert_stream_without_hints,\n        test_convert_http_uri,\n        test_convert_file_uri,\n        test_convert_data_uri,\n    ]:\n        for test_vector in GENERAL_TEST_VECTORS:\n            print(\n                f\"Running {test_function.__name__} on {test_vector.filename}...\", end=\"\"\n            )\n            test_function(test_vector)\n            print(\"OK\")\n\n    # Data URI tests\n    for test_function in [\n        test_convert_keep_data_uris,\n        test_convert_stream_keep_data_uris,\n    ]:\n        for test_vector in DATA_URI_TEST_VECTORS:\n            print(\n                f\"Running {test_function.__name__} on {test_vector.filename}...\", end=\"\"\n            )\n            test_function(test_vector)\n            print(\"OK\")\n\n    print(\"All tests passed!\")\n"
  },
  {
    "path": "packages/markitdown/tests/test_pdf_masterformat.py",
    "content": "#!/usr/bin/env python3 -m pytest\n\"\"\"Tests for MasterFormat-style partial numbering in PDF conversion.\"\"\"\n\nimport os\nimport re\nimport pytest\n\nfrom markitdown import MarkItDown\nfrom markitdown.converters._pdf_converter import PARTIAL_NUMBERING_PATTERN\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\n\n\nclass TestMasterFormatPartialNumbering:\n    \"\"\"Test handling of MasterFormat-style partial numbering (.1, .2, etc.).\"\"\"\n\n    def test_partial_numbering_pattern_regex(self):\n        \"\"\"Test that the partial numbering regex pattern correctly matches.\"\"\"\n\n        # Should match partial numbering patterns\n        assert PARTIAL_NUMBERING_PATTERN.match(\".1\") is not None\n        assert PARTIAL_NUMBERING_PATTERN.match(\".2\") is not None\n        assert PARTIAL_NUMBERING_PATTERN.match(\".10\") is not None\n        assert PARTIAL_NUMBERING_PATTERN.match(\".99\") is not None\n\n        # Should NOT match other patterns\n        assert PARTIAL_NUMBERING_PATTERN.match(\"1.\") is None\n        assert PARTIAL_NUMBERING_PATTERN.match(\"1.2\") is None\n        assert PARTIAL_NUMBERING_PATTERN.match(\".1.2\") is None\n        assert PARTIAL_NUMBERING_PATTERN.match(\"text\") is None\n        assert PARTIAL_NUMBERING_PATTERN.match(\".a\") is None\n        assert PARTIAL_NUMBERING_PATTERN.match(\"\") is None\n\n    def test_masterformat_partial_numbering_not_split(self):\n        \"\"\"Test that MasterFormat partial numbering stays with associated text.\n\n        MasterFormat documents use partial numbering like:\n            .1  The intent of this Request for Proposal...\n            .2  Available information relative to...\n\n        These should NOT be split into separate table columns, but kept\n        as coherent text lines with the number followed by its description.\n        \"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"masterformat_partial_numbering.pdf\")\n\n        markitdown = MarkItDown()\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Partial numberings should NOT appear isolated on their own lines\n        # If they're isolated, it means the parser incorrectly split them from their text\n        lines = text_content.split(\"\\n\")\n        isolated_numberings = []\n        for line in lines:\n            stripped = line.strip()\n            # Check if line contains ONLY a partial numbering (with possible whitespace/pipes)\n            cleaned = stripped.replace(\"|\", \"\").strip()\n            if cleaned in [\".1\", \".2\", \".3\", \".4\", \".5\", \".6\", \".7\", \".8\", \".9\", \".10\"]:\n                isolated_numberings.append(stripped)\n\n        assert len(isolated_numberings) == 0, (\n            f\"Partial numberings should not be isolated from their text. \"\n            f\"Found isolated: {isolated_numberings}\"\n        )\n\n        # Verify that partial numberings appear WITH following text on the same line\n        # Look for patterns like \".1 The intent\" or \".1  Some text\"\n        partial_with_text = re.findall(r\"\\.\\d+\\s+\\w+\", text_content)\n        assert (\n            len(partial_with_text) > 0\n        ), \"Expected to find partial numberings followed by text on the same line\"\n\n    def test_masterformat_content_preserved(self):\n        \"\"\"Test that MasterFormat document content is fully preserved.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"masterformat_partial_numbering.pdf\")\n\n        markitdown = MarkItDown()\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Verify key content from the MasterFormat document is preserved\n        expected_content = [\n            \"RFP for Construction Management Services\",\n            \"Section 00 00 43\",\n            \"Instructions to Respondents\",\n            \"Ken Sargent House\",\n            \"INTENT\",\n            \"Request for Proposal\",\n            \"KEN SARGENT HOUSE\",\n            \"GRANDE PRAIRIE, ALBERTA\",\n            \"Section 00 00 45\",\n        ]\n\n        for content in expected_content:\n            assert (\n                content in text_content\n            ), f\"Expected content '{content}' not found in extracted text\"\n\n        # Verify partial numbering is followed by text on the same line\n        # .1 should be followed by \"The intent\" on the same line\n        assert re.search(\n            r\"\\.1\\s+The intent\", text_content\n        ), \"Partial numbering .1 should be followed by 'The intent' text\"\n\n        # .2 should be followed by \"Available information\" on the same line\n        assert re.search(\n            r\"\\.2\\s+Available information\", text_content\n        ), \"Partial numbering .2 should be followed by 'Available information' text\"\n\n        # Ensure text content is not empty and has reasonable length\n        assert (\n            len(text_content.strip()) > 100\n        ), \"MasterFormat document should have substantial text content\"\n\n    def test_merge_partial_numbering_with_empty_lines_between(self):\n        \"\"\"Test that partial numberings merge correctly even with empty lines between.\n\n        When PDF extractors produce output like:\n            .1\n\n            The intent of this Request...\n\n        The merge logic should still combine them properly.\n        \"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"masterformat_partial_numbering.pdf\")\n\n        markitdown = MarkItDown()\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # The merged result should have .1 and .2 followed by text\n        # Check that we don't have patterns like \".1\\n\\nThe intent\" (unmerged)\n        lines = text_content.split(\"\\n\")\n\n        for i, line in enumerate(lines):\n            stripped = line.strip()\n            # If we find an isolated partial numbering, the merge failed\n            if stripped in [\".1\", \".2\", \".3\", \".4\", \".5\", \".6\", \".7\", \".8\"]:\n                # Check if next non-empty line exists and wasn't merged\n                for j in range(i + 1, min(i + 3, len(lines))):\n                    if lines[j].strip():\n                        pytest.fail(\n                            f\"Partial numbering '{stripped}' on line {i} was not \"\n                            f\"merged with following text '{lines[j].strip()[:30]}...'\"\n                        )\n                        break\n\n    def test_multiple_partial_numberings_all_merged(self):\n        \"\"\"Test that all partial numberings in a document are properly merged.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"masterformat_partial_numbering.pdf\")\n\n        markitdown = MarkItDown()\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Count occurrences of merged partial numberings (number followed by text)\n        merged_count = len(re.findall(r\"\\.\\d+\\s+[A-Za-z]\", text_content))\n\n        # Count isolated partial numberings (number alone on a line)\n        isolated_count = 0\n        for line in text_content.split(\"\\n\"):\n            stripped = line.strip()\n            if re.match(r\"^\\.\\d+$\", stripped):\n                isolated_count += 1\n\n        assert (\n            merged_count >= 2\n        ), f\"Expected at least 2 merged partial numberings, found {merged_count}\"\n        assert (\n            isolated_count == 0\n        ), f\"Found {isolated_count} isolated partial numberings that weren't merged\"\n"
  },
  {
    "path": "packages/markitdown/tests/test_pdf_memory.py",
    "content": "#!/usr/bin/env python3 -m pytest\n\"\"\"Tests for PDF converter memory optimization.\n\nVerifies that:\n- page.close() is called after processing each page (frees cached data)\n- Plain-text PDFs fall back to pdfminer when no form pages are found\n- Mixed PDFs use form extraction only on form-style pages\n- Memory stays constant regardless of page count\n\"\"\"\n\nimport gc\nimport io\nimport os\nimport tracemalloc\n\nimport pytest\nfrom unittest.mock import patch, MagicMock\n\nfrom markitdown import MarkItDown\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\n\n\ndef _has_fpdf2() -> bool:\n    try:\n        import fpdf  # noqa: F401\n\n        return True\n    except ImportError:\n        return False\n\n\ndef _make_form_page():\n    \"\"\"Create a mock page with 3-column table-like word positions.\"\"\"\n    page = MagicMock()\n    page.width = 612\n    page.close = MagicMock()\n    page.extract_words.return_value = [\n        {\"text\": \"Name\", \"x0\": 50, \"x1\": 100, \"top\": 10, \"bottom\": 20},\n        {\"text\": \"Value\", \"x0\": 250, \"x1\": 300, \"top\": 10, \"bottom\": 20},\n        {\"text\": \"Unit\", \"x0\": 450, \"x1\": 500, \"top\": 10, \"bottom\": 20},\n        {\"text\": \"Alpha\", \"x0\": 50, \"x1\": 100, \"top\": 30, \"bottom\": 40},\n        {\"text\": \"100\", \"x0\": 250, \"x1\": 280, \"top\": 30, \"bottom\": 40},\n        {\"text\": \"kg\", \"x0\": 450, \"x1\": 470, \"top\": 30, \"bottom\": 40},\n        {\"text\": \"Beta\", \"x0\": 50, \"x1\": 100, \"top\": 50, \"bottom\": 60},\n        {\"text\": \"200\", \"x0\": 250, \"x1\": 280, \"top\": 50, \"bottom\": 60},\n        {\"text\": \"lb\", \"x0\": 450, \"x1\": 470, \"top\": 50, \"bottom\": 60},\n    ]\n    return page\n\n\ndef _make_plain_page():\n    \"\"\"Create a mock page with single-line paragraph (no table structure).\"\"\"\n    page = MagicMock()\n    page.width = 612\n    page.close = MagicMock()\n    page.extract_words.return_value = [\n        {\n            \"text\": \"This is a long paragraph of plain text.\",\n            \"x0\": 50,\n            \"x1\": 550,\n            \"top\": 10,\n            \"bottom\": 20,\n        },\n    ]\n    page.extract_text.return_value = \"This is a long paragraph of plain text.\"\n    return page\n\n\ndef _mock_pdfplumber_open(pages):\n    \"\"\"Return a mock pdfplumber.open that yields the given pages.\"\"\"\n\n    def mock_open(stream):\n        mock_pdf = MagicMock()\n        mock_pdf.pages = pages\n        mock_pdf.__enter__ = MagicMock(return_value=mock_pdf)\n        mock_pdf.__exit__ = MagicMock(return_value=False)\n        return mock_pdf\n\n    return mock_open\n\n\nclass TestPdfMemoryOptimization:\n    \"\"\"Test that PDF conversion cleans up per-page caches to limit memory.\"\"\"\n\n    def test_page_close_called_on_every_page(self):\n        \"\"\"Verify page.close() is called on every page during conversion.\n\n        This ensures cached word/layout data is freed after each page,\n        preventing O(n) memory growth with page count.\n        \"\"\"\n        num_pages = 20\n        pages = [_make_form_page() for _ in range(num_pages)]\n\n        with patch(\n            \"markitdown.converters._pdf_converter.pdfplumber\"\n        ) as mock_pdfplumber:\n            mock_pdfplumber.open.side_effect = _mock_pdfplumber_open(pages)\n\n            md = MarkItDown()\n            buf = io.BytesIO(b\"fake pdf content\")\n            from markitdown import StreamInfo\n\n            md.convert_stream(\n                buf,\n                stream_info=StreamInfo(extension=\".pdf\", mimetype=\"application/pdf\"),\n            )\n\n        # page.close() must be called on ALL pages\n        for i, page in enumerate(pages):\n            assert page.close.called, (\n                f\"page.close() was NOT called on page {i} — \"\n                \"this would cause memory to accumulate\"\n            )\n\n    def test_plain_text_pdf_falls_back_to_pdfminer(self):\n        \"\"\"Verify all-plain-text PDFs fall back to pdfminer.\n\n        When no page has form-style content, the converter should discard\n        pdfplumber results and use pdfminer for the whole document (better\n        text spacing for prose).\n        \"\"\"\n        num_pages = 50\n        pages = [_make_plain_page() for _ in range(num_pages)]\n\n        with patch(\n            \"markitdown.converters._pdf_converter.pdfplumber\"\n        ) as mock_pdfplumber, patch(\n            \"markitdown.converters._pdf_converter.pdfminer\"\n        ) as mock_pdfminer:\n            mock_pdfplumber.open.side_effect = _mock_pdfplumber_open(pages)\n            mock_pdfminer.high_level.extract_text.return_value = \"Plain text content\"\n\n            md = MarkItDown()\n            buf = io.BytesIO(b\"fake pdf content\")\n            from markitdown import StreamInfo\n\n            result = md.convert_stream(\n                buf,\n                stream_info=StreamInfo(extension=\".pdf\", mimetype=\"application/pdf\"),\n            )\n\n        # pdfminer should be used for the final text extraction\n        assert mock_pdfminer.high_level.extract_text.called, (\n            \"pdfminer.high_level.extract_text was not called — \"\n            \"plain-text PDFs should fall back to pdfminer\"\n        )\n        assert result.text_content is not None\n\n    def test_plain_text_pdf_still_closes_all_pages(self):\n        \"\"\"Even for plain-text PDFs, page.close() must be called on every page.\"\"\"\n        num_pages = 30\n        pages = [_make_plain_page() for _ in range(num_pages)]\n\n        with patch(\n            \"markitdown.converters._pdf_converter.pdfplumber\"\n        ) as mock_pdfplumber, patch(\n            \"markitdown.converters._pdf_converter.pdfminer\"\n        ) as mock_pdfminer:\n            mock_pdfplumber.open.side_effect = _mock_pdfplumber_open(pages)\n            mock_pdfminer.high_level.extract_text.return_value = \"text\"\n\n            md = MarkItDown()\n            buf = io.BytesIO(b\"fake pdf content\")\n            from markitdown import StreamInfo\n\n            md.convert_stream(\n                buf,\n                stream_info=StreamInfo(extension=\".pdf\", mimetype=\"application/pdf\"),\n            )\n\n        for i, page in enumerate(pages):\n            assert (\n                page.close.called\n            ), f\"page.close() was NOT called on plain-text page {i}\"\n\n    def test_mixed_pdf_uses_form_extraction_per_page(self):\n        \"\"\"In a mixed PDF, form pages get table extraction while plain pages don't.\n\n        Ensures we don't miss form-style pages and don't waste work\n        running form extraction on plain-text pages.\n        \"\"\"\n        # Pages 0,2,4 are form-style; pages 1,3 are plain text\n        pages = [\n            _make_form_page(),  # 0 - form\n            _make_plain_page(),  # 1 - plain\n            _make_form_page(),  # 2 - form\n            _make_plain_page(),  # 3 - plain\n            _make_form_page(),  # 4 - form\n        ]\n\n        with patch(\n            \"markitdown.converters._pdf_converter.pdfplumber\"\n        ) as mock_pdfplumber:\n            mock_pdfplumber.open.side_effect = _mock_pdfplumber_open(pages)\n\n            md = MarkItDown()\n            buf = io.BytesIO(b\"fake pdf content\")\n            from markitdown import StreamInfo\n\n            result = md.convert_stream(\n                buf,\n                stream_info=StreamInfo(extension=\".pdf\", mimetype=\"application/pdf\"),\n            )\n\n        # All pages should have close() called\n        for i, page in enumerate(pages):\n            assert page.close.called, f\"page.close() not called on page {i}\"\n\n        # Form pages (0,2,4) should have extract_words called\n        for i in [0, 2, 4]:\n            assert pages[\n                i\n            ].extract_words.called, f\"extract_words not called on form page {i}\"\n\n        # Result should contain table content from form pages\n        assert result.text_content is not None\n        assert (\n            \"|\" in result.text_content\n        ), \"Expected markdown table pipes in output from form-style pages\"\n\n    def test_only_one_pdfplumber_open_call(self):\n        \"\"\"Verify pdfplumber.open is called exactly once (single pass).\"\"\"\n        pages = [_make_form_page() for _ in range(10)]\n\n        with patch(\n            \"markitdown.converters._pdf_converter.pdfplumber\"\n        ) as mock_pdfplumber:\n            mock_pdfplumber.open.side_effect = _mock_pdfplumber_open(pages)\n\n            md = MarkItDown()\n            buf = io.BytesIO(b\"fake pdf content\")\n            from markitdown import StreamInfo\n\n            md.convert_stream(\n                buf,\n                stream_info=StreamInfo(extension=\".pdf\", mimetype=\"application/pdf\"),\n            )\n\n        assert mock_pdfplumber.open.call_count == 1, (\n            f\"Expected 1 pdfplumber.open call (single pass), \"\n            f\"got {mock_pdfplumber.open.call_count}\"\n        )\n\n    @pytest.mark.skipif(\n        not os.path.exists(os.path.join(TEST_FILES_DIR, \"test.pdf\")),\n        reason=\"test.pdf not available\",\n    )\n    def test_real_pdf_page_cleanup(self):\n        \"\"\"Integration test: verify page.close() is called with a real PDF.\"\"\"\n        import pdfplumber\n\n        close_call_count = 0\n        original_close = pdfplumber.page.Page.close\n\n        def tracking_close(self):\n            nonlocal close_call_count\n            close_call_count += 1\n            original_close(self)\n\n        with patch.object(pdfplumber.page.Page, \"close\", tracking_close):\n            md = MarkItDown()\n            pdf_path = os.path.join(TEST_FILES_DIR, \"test.pdf\")\n            md.convert(pdf_path)\n\n        assert (\n            close_call_count > 0\n        ), \"page.close() was never called during PDF conversion\"\n\n\ndef _generate_table_pdf(num_pages: int) -> bytes:\n    \"\"\"Generate a PDF with table-like content on every page.\"\"\"\n    from fpdf import FPDF\n\n    pdf = FPDF()\n    pdf.set_auto_page_break(auto=False)\n    for page_num in range(num_pages):\n        pdf.add_page()\n        pdf.set_font(\"Helvetica\", size=10)\n        pdf.set_xy(10, 10)\n        pdf.cell(60, 8, \"Parameter\", border=1)\n        pdf.cell(60, 8, \"Value\", border=1)\n        pdf.cell(60, 8, \"Unit\", border=1)\n        pdf.ln()\n        for row in range(20):\n            y = 18 + row * 8\n            if y > 270:\n                break\n            pdf.set_xy(10, y)\n            pdf.cell(60, 8, f\"Param_{page_num}_{row}\", border=1)\n            pdf.cell(60, 8, f\"{(page_num * 100 + row) * 1.23:.2f}\", border=1)\n            pdf.cell(60, 8, \"kg/m2\", border=1)\n    return pdf.output()\n\n\n@pytest.mark.skipif(\n    not _has_fpdf2(),\n    reason=\"fpdf2 not installed\",\n)\nclass TestPdfMemoryBenchmark:\n    \"\"\"Benchmark: verify memory stays constant with page.close() fix.\"\"\"\n\n    def test_memory_does_not_grow_linearly(self):\n        \"\"\"Peak memory for 200 pages should be far less than without the fix.\n\n        Without page.close(), 200 pages uses ~225 MiB (linear growth).\n        With the fix, peak memory should stay under 30 MiB.\n        \"\"\"\n        from markitdown import StreamInfo\n\n        num_pages = 200\n        pdf_bytes = _generate_table_pdf(num_pages)\n\n        gc.collect()\n        tracemalloc.start()\n\n        md = MarkItDown()\n        buf = io.BytesIO(pdf_bytes)\n        md.convert_stream(buf, stream_info=StreamInfo(extension=\".pdf\"))\n\n        _, peak = tracemalloc.get_traced_memory()\n        tracemalloc.stop()\n\n        peak_mib = peak / 1024 / 1024\n        # Without the fix this would be ~225 MiB. With the fix it should\n        # be well under 30 MiB. Use a generous threshold to avoid flaky\n        # failures on different machines.\n        assert peak_mib < 30, (\n            f\"Peak memory {peak_mib:.1f} MiB for {num_pages} pages is too high. \"\n            f\"Expected < 30 MiB with page.close() fix.\"\n        )\n\n    def test_memory_constant_across_page_counts(self):\n        \"\"\"Peak memory should not scale linearly with page count.\n\n        Converts 50-page and 200-page PDFs and asserts the peak memory\n        ratio is much less than the 4x page count ratio.\n        \"\"\"\n        from markitdown import StreamInfo\n\n        results = {}\n        for num_pages in [50, 200]:\n            pdf_bytes = _generate_table_pdf(num_pages)\n\n            gc.collect()\n            tracemalloc.start()\n\n            md = MarkItDown()\n            buf = io.BytesIO(pdf_bytes)\n            md.convert_stream(buf, stream_info=StreamInfo(extension=\".pdf\"))\n\n            _, peak = tracemalloc.get_traced_memory()\n            tracemalloc.stop()\n            results[num_pages] = peak\n\n        ratio = results[200] / results[50]\n        # With O(n) memory growth the ratio would be ~4x.\n        # With the fix it should be close to 1x (well under 2x).\n        assert ratio < 2.0, (\n            f\"Memory ratio 200p/50p = {ratio:.2f}x — \"\n            f\"expected < 2.0x (constant memory). \"\n            f\"50p={results[50] / 1024 / 1024:.1f} MiB, \"\n            f\"200p={results[200] / 1024 / 1024:.1f} MiB\"\n        )\n"
  },
  {
    "path": "packages/markitdown/tests/test_pdf_tables.py",
    "content": "#!/usr/bin/env python3 -m pytest\n\"\"\"Tests for PDF table extraction functionality.\"\"\"\n\nimport os\nimport re\nimport pytest\n\nfrom markitdown import MarkItDown\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\n\n\n# --- Helper Functions ---\ndef validate_strings(result, expected_strings, exclude_strings=None):\n    \"\"\"Validate presence or absence of specific strings.\"\"\"\n    text_content = result.text_content.replace(\"\\\\\", \"\")\n    for string in expected_strings:\n        assert string in text_content, f\"Expected string not found: {string}\"\n    if exclude_strings:\n        for string in exclude_strings:\n            assert string not in text_content, f\"Excluded string found: {string}\"\n\n\ndef validate_markdown_table(result, expected_headers, expected_data_samples):\n    \"\"\"Validate that a markdown table exists with expected headers and data.\"\"\"\n    text_content = result.text_content\n\n    # Check for markdown table structure (| header | header |)\n    assert \"|\" in text_content, \"No markdown table markers found\"\n\n    # Check headers are present\n    for header in expected_headers:\n        assert header in text_content, f\"Expected table header not found: {header}\"\n\n    # Check some data values are present\n    for data in expected_data_samples:\n        assert data in text_content, f\"Expected table data not found: {data}\"\n\n\ndef extract_markdown_tables(text_content):\n    \"\"\"\n    Extract all markdown tables from text content.\n    Returns a list of tables, where each table is a list of rows,\n    and each row is a list of cell values.\n    \"\"\"\n    tables = []\n    lines = text_content.split(\"\\n\")\n    current_table = []\n    in_table = False\n\n    for line in lines:\n        line = line.strip()\n        if line.startswith(\"|\") and line.endswith(\"|\"):\n            # Skip separator rows (contain only dashes and pipes)\n            if re.match(r\"^\\|[\\s\\-|]+\\|$\", line):\n                continue\n            # Parse cells from the row\n            cells = [cell.strip() for cell in line.split(\"|\")[1:-1]]\n            current_table.append(cells)\n            in_table = True\n        else:\n            if in_table and current_table:\n                tables.append(current_table)\n                current_table = []\n            in_table = False\n\n    # Don't forget the last table\n    if current_table:\n        tables.append(current_table)\n\n    return tables\n\n\ndef validate_table_structure(table):\n    \"\"\"\n    Validate that a table has consistent structure:\n    - All rows have the same number of columns\n    - Has at least a header row and one data row\n    \"\"\"\n    if not table:\n        return False, \"Table is empty\"\n\n    if len(table) < 2:\n        return False, \"Table should have at least header and one data row\"\n\n    num_cols = len(table[0])\n    if num_cols < 2:\n        return False, f\"Table should have at least 2 columns, found {num_cols}\"\n\n    for i, row in enumerate(table):\n        if len(row) != num_cols:\n            return False, f\"Row {i} has {len(row)} columns, expected {num_cols}\"\n\n    return True, \"Table structure is valid\"\n\n\nclass TestPdfTableExtraction:\n    \"\"\"Test PDF table extraction with various PDF types.\"\"\"\n\n    @pytest.fixture\n    def markitdown(self):\n        \"\"\"Create MarkItDown instance.\"\"\"\n        return MarkItDown()\n\n    def test_borderless_table_extraction(self, markitdown):\n        \"\"\"Test extraction of borderless tables from SPARSE inventory PDF.\n\n        Expected output structure:\n        - Header: INVENTORY RECONCILIATION REPORT with Report ID, Warehouse, Date, Prepared By\n        - Pipe-separated rows with inventory data\n        - Text section: Variance Analysis with Summary Statistics\n        - More pipe-separated rows with extended inventory review\n        - Footer: Recommendations section\n        \"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Validate document header content\n        expected_strings = [\n            \"INVENTORY RECONCILIATION REPORT\",\n            \"Report ID: SPARSE-2024-INV-1234\",\n            \"Warehouse: Distribution Center East\",\n            \"Report Date: 2024-11-15\",\n            \"Prepared By: Sarah Martinez\",\n        ]\n        validate_strings(result, expected_strings)\n\n        # Validate pipe-separated format is used\n        assert \"|\" in text_content, \"Should have pipe separators for form-style data\"\n\n        # --- Validate First Table Data (Inventory Variance) ---\n        # Validate table headers are present\n        first_table_headers = [\n            \"Product Code\",\n            \"Location\",\n            \"Expected\",\n            \"Actual\",\n            \"Variance\",\n            \"Status\",\n        ]\n        for header in first_table_headers:\n            assert header in text_content, f\"Should contain header '{header}'\"\n\n        # Validate first table has all expected SKUs\n        first_table_skus = [\"SKU-8847\", \"SKU-9201\", \"SKU-4563\", \"SKU-7728\"]\n        for sku in first_table_skus:\n            assert sku in text_content, f\"Should contain {sku}\"\n\n        # Validate first table has correct status values\n        expected_statuses = [\"OK\", \"CRITICAL\"]\n        for status in expected_statuses:\n            assert status in text_content, f\"Should contain status '{status}'\"\n\n        # Validate first table has location codes\n        expected_locations = [\"A-12\", \"B-07\", \"C-15\", \"D-22\", \"A-08\"]\n        for loc in expected_locations:\n            assert loc in text_content, f\"Should contain location '{loc}'\"\n\n        # --- Validate Second Table Data (Extended Inventory Review) ---\n        # Validate second table headers\n        second_table_headers = [\n            \"Category\",\n            \"Unit Cost\",\n            \"Total Value\",\n            \"Last Audit\",\n            \"Notes\",\n        ]\n        for header in second_table_headers:\n            assert header in text_content, f\"Should contain header '{header}'\"\n\n        # Validate second table has all expected SKUs (10 products)\n        second_table_skus = [\n            \"SKU-8847\",\n            \"SKU-9201\",\n            \"SKU-4563\",\n            \"SKU-7728\",\n            \"SKU-3345\",\n            \"SKU-5512\",\n            \"SKU-6678\",\n            \"SKU-7789\",\n            \"SKU-2234\",\n            \"SKU-1123\",\n        ]\n        for sku in second_table_skus:\n            assert sku in text_content, f\"Should contain {sku}\"\n\n        # Validate second table has categories\n        expected_categories = [\"Electronics\", \"Hardware\", \"Software\", \"Accessories\"]\n        for category in expected_categories:\n            assert category in text_content, f\"Should contain category '{category}'\"\n\n        # Validate second table has cost values (spot check)\n        expected_costs = [\"$45.00\", \"$32.50\", \"$120.00\", \"$15.75\"]\n        for cost in expected_costs:\n            assert cost in text_content, f\"Should contain cost '{cost}'\"\n\n        # Validate second table has note values\n        expected_notes = [\"Verified\", \"Critical\", \"Pending\"]\n        for note in expected_notes:\n            assert note in text_content, f\"Should contain note '{note}'\"\n\n        # --- Validate Analysis Text Section ---\n        analysis_strings = [\n            \"Variance Analysis:\",\n            \"Summary Statistics:\",\n            \"Total Variance Cost: $4,287.50\",\n            \"Critical Items: 1\",\n            \"Overall Accuracy: 97.2%\",\n            \"Recommendations:\",\n        ]\n        validate_strings(result, analysis_strings)\n\n        # --- Validate Document Structure Order ---\n        # Verify sections appear in correct order\n        # Note: Using flexible patterns since column merging may occur based on gap detection\n        import re\n\n        header_pos = text_content.find(\"INVENTORY RECONCILIATION REPORT\")\n        # Look for Product Code header - may be in same column as Location or separate\n        first_table_match = re.search(r\"\\|\\s*Product Code\", text_content)\n        variance_pos = text_content.find(\"Variance Analysis:\")\n        extended_review_pos = text_content.find(\"Extended Inventory Review:\")\n        # Second table - look for SKU entries after extended review section\n        # The table may not have pipes on every row due to paragraph detection\n        second_table_pos = -1\n        if extended_review_pos != -1:\n            # Look for either \"| Product Code\" or \"Product Code\" as table header\n            second_table_match = re.search(\n                r\"Product Code.*Category\", text_content[extended_review_pos:]\n            )\n            if second_table_match:\n                # Adjust position to be relative to full text\n                second_table_pos = extended_review_pos + second_table_match.start()\n        recommendations_pos = text_content.find(\"Recommendations:\")\n\n        positions = {\n            \"header\": header_pos,\n            \"first_table\": first_table_match.start() if first_table_match else -1,\n            \"variance_analysis\": variance_pos,\n            \"extended_review\": extended_review_pos,\n            \"second_table\": second_table_pos,\n            \"recommendations\": recommendations_pos,\n        }\n\n        # All sections should be found\n        for name, pos in positions.items():\n            assert pos != -1, f\"Section '{name}' not found in output\"\n\n        # Verify correct order\n        assert (\n            positions[\"header\"] < positions[\"first_table\"]\n        ), \"Header should come before first table\"\n        assert (\n            positions[\"first_table\"] < positions[\"variance_analysis\"]\n        ), \"First table should come before Variance Analysis\"\n        assert (\n            positions[\"variance_analysis\"] < positions[\"extended_review\"]\n        ), \"Variance Analysis should come before Extended Review\"\n        assert (\n            positions[\"extended_review\"] < positions[\"second_table\"]\n        ), \"Extended Review should come before second table\"\n        assert (\n            positions[\"second_table\"] < positions[\"recommendations\"]\n        ), \"Second table should come before Recommendations\"\n\n    def test_borderless_table_no_duplication(self, markitdown):\n        \"\"\"Test that borderless table content is not duplicated excessively.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Count occurrences of unique table data - should not be excessively duplicated\n        # SKU-8847 appears in both tables, plus possibly once in summary text\n        sku_count = text_content.count(\"SKU-8847\")\n        # Should appear at most 4 times (2 tables + minor text references), not more\n        assert (\n            sku_count <= 4\n        ), f\"SKU-8847 appears too many times ({sku_count}), suggests duplication issue\"\n\n    def test_borderless_table_correct_position(self, markitdown):\n        \"\"\"Test that tables appear in correct positions relative to text.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Verify content order - header should come before table content, which should come before analysis\n        header_pos = text_content.find(\"Prepared By: Sarah Martinez\")\n        # Look for Product Code in any pipe-separated format\n        product_code_pos = text_content.find(\"Product Code\")\n        variance_pos = text_content.find(\"Variance Analysis:\")\n\n        assert header_pos != -1, \"Header should be found\"\n        assert product_code_pos != -1, \"Product Code should be found\"\n        assert variance_pos != -1, \"Variance Analysis should be found\"\n\n        assert (\n            header_pos < product_code_pos < variance_pos\n        ), \"Product data should appear between header and Variance Analysis\"\n\n        # Second table content should appear after \"Extended Inventory Review\"\n        extended_review_pos = text_content.find(\"Extended Inventory Review:\")\n        # Look for Category header which is in second table\n        category_pos = text_content.find(\"Category\")\n        recommendations_pos = text_content.find(\"Recommendations:\")\n\n        if (\n            extended_review_pos != -1\n            and category_pos != -1\n            and recommendations_pos != -1\n        ):\n            # Find Category position after Extended Inventory Review\n            category_after_review = text_content.find(\"Category\", extended_review_pos)\n            if category_after_review != -1:\n                assert (\n                    extended_review_pos < category_after_review < recommendations_pos\n                ), \"Extended review table should appear between Extended Inventory Review and Recommendations\"\n\n    def test_receipt_pdf_extraction(self, markitdown):\n        \"\"\"Test extraction of receipt PDF (no tables, formatted text).\n\n        Expected output structure:\n        - Store header: TECHMART ELECTRONICS with address\n        - Transaction info: Store #, date, TXN, Cashier, Register\n        - Line items: 6 products with prices and member discounts\n        - Totals: Subtotal, Member Discount, Sales Tax, Rewards, TOTAL\n        - Payment info: Visa Card, Auth, Ref\n        - Rewards member info: Name, ID, Points\n        - Return policy and footer\n        \"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"RECEIPT-2024-TXN-98765_retail_purchase.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # --- Validate Store Header ---\n        store_header = [\n            \"TECHMART ELECTRONICS\",\n            \"4567 Innovation Blvd\",\n            \"San Francisco, CA 94103\",\n            \"(415) 555-0199\",\n        ]\n        validate_strings(result, store_header)\n\n        # --- Validate Transaction Info ---\n        transaction_info = [\n            \"Store #0342 - Downtown SF\",\n            \"11/23/2024\",\n            \"TXN: TXN-98765-2024\",\n            \"Cashier: Emily Rodriguez\",\n            \"Register: POS-07\",\n        ]\n        validate_strings(result, transaction_info)\n\n        # --- Validate Line Items (6 products) ---\n        line_items = [\n            # Product 1: Headphones\n            \"Wireless Noise-Cancelling\",\n            \"Headphones - Premium Black\",\n            \"AUDIO-5521\",\n            \"$349.99\",\n            \"$299.99\",\n            # Product 2: USB-C Hub\n            \"USB-C Hub 7-in-1 Adapter\",\n            \"ACC-8834\",\n            \"$79.99\",\n            \"$159.98\",\n            # Product 3: Portable SSD\n            \"Portable SSD 2TB\",\n            \"STOR-2241\",\n            \"$289.00\",\n            \"$260.00\",\n            # Product 4: Wireless Mouse\n            \"Ergonomic Wireless Mouse\",\n            \"ACC-9012\",\n            \"$59.99\",\n            # Product 5: Screen Cleaning Kit\n            \"Screen Cleaning Kit\",\n            \"CARE-1156\",\n            \"$12.99\",\n            \"$38.97\",\n            # Product 6: HDMI Cable\n            \"HDMI 2.1 Cable 6ft\",\n            \"CABLE-7789\",\n            \"$24.99\",\n            \"$44.98\",\n        ]\n        validate_strings(result, line_items)\n\n        # --- Validate Totals ---\n        totals = [\n            \"SUBTOTAL\",\n            \"$863.91\",\n            \"Member Discount\",\n            \"Sales Tax (8.5%)\",\n            \"$66.23\",\n            \"Rewards Applied\",\n            \"-$25.00\",\n            \"TOTAL\",\n            \"$821.14\",\n        ]\n        validate_strings(result, totals)\n\n        # --- Validate Payment Info ---\n        payment_info = [\n            \"PAYMENT METHOD\",\n            \"Visa Card ending in 4782\",\n            \"Auth: 847392\",\n            \"REF-20241123-98765\",\n        ]\n        validate_strings(result, payment_info)\n\n        # --- Validate Rewards Member Info ---\n        rewards_info = [\n            \"REWARDS MEMBER\",\n            \"Sarah Mitchell\",\n            \"ID: TM-447821\",\n            \"Points Earned: 821\",\n            \"Total Points: 3,247\",\n        ]\n        validate_strings(result, rewards_info)\n\n        # --- Validate Return Policy & Footer ---\n        footer_info = [\n            \"RETURN POLICY\",\n            \"Returns within 30 days\",\n            \"Receipt required\",\n            \"Thank you for shopping!\",\n            \"www.techmart.example.com\",\n        ]\n        validate_strings(result, footer_info)\n\n        # --- Validate Document Structure Order ---\n        positions = {\n            \"store_header\": text_content.find(\"TECHMART ELECTRONICS\"),\n            \"transaction\": text_content.find(\"TXN: TXN-98765-2024\"),\n            \"first_item\": text_content.find(\"Wireless Noise-Cancelling\"),\n            \"subtotal\": text_content.find(\"SUBTOTAL\"),\n            \"total\": text_content.find(\"TOTAL\"),\n            \"payment\": text_content.find(\"PAYMENT METHOD\"),\n            \"rewards\": text_content.find(\"REWARDS MEMBER\"),\n            \"return_policy\": text_content.find(\"RETURN POLICY\"),\n        }\n\n        # All sections should be found\n        for name, pos in positions.items():\n            assert pos != -1, f\"Section '{name}' not found in output\"\n\n        # Verify correct order\n        assert (\n            positions[\"store_header\"] < positions[\"transaction\"]\n        ), \"Store header should come before transaction\"\n        assert (\n            positions[\"transaction\"] < positions[\"first_item\"]\n        ), \"Transaction should come before items\"\n        assert (\n            positions[\"first_item\"] < positions[\"subtotal\"]\n        ), \"Items should come before subtotal\"\n        assert (\n            positions[\"subtotal\"] < positions[\"total\"]\n        ), \"Subtotal should come before total\"\n        assert (\n            positions[\"total\"] < positions[\"payment\"]\n        ), \"Total should come before payment\"\n        assert (\n            positions[\"payment\"] < positions[\"rewards\"]\n        ), \"Payment should come before rewards\"\n        assert (\n            positions[\"rewards\"] < positions[\"return_policy\"]\n        ), \"Rewards should come before return policy\"\n\n    def test_multipage_invoice_extraction(self, markitdown):\n        \"\"\"Test extraction of multipage invoice PDF with form-style layout.\n\n        Expected output: Pipe-separated format with clear cell boundaries.\n        Form data should be extracted with pipes indicating column separations.\n        \"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"REPAIR-2022-INV-001_multipage.pdf\")\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Validate basic content is extracted\n        expected_strings = [\n            \"ZAVA AUTO REPAIR\",\n            \"Collision Repair\",\n            \"Redmond, WA\",\n            \"Gabriel Diaz\",\n            \"Jeep\",\n            \"Grand Cherokee\",\n            \"Parts\",\n            \"Body Labor\",\n            \"Paint Labor\",\n            \"GRAND TOTAL\",\n            # Second page content\n            \"Bruce Wayne\",\n            \"Batmobile\",\n        ]\n        validate_strings(result, expected_strings)\n\n        # Validate pipe-separated table format\n        # Form-style documents should use pipes to separate cells\n        assert \"|\" in text_content, \"Form-style PDF should contain pipe separators\"\n\n        # Validate key form fields are properly separated\n        # These patterns check that label and value are in separate cells\n        # Note: cells may have padding spaces for column alignment\n        import re\n\n        assert re.search(\n            r\"\\| Insured name\\s*\\|\", text_content\n        ), \"Insured name should be in its own cell\"\n        assert re.search(\n            r\"\\| Gabriel Diaz\\s*\\|\", text_content\n        ), \"Gabriel Diaz should be in its own cell\"\n        assert re.search(\n            r\"\\| Year\\s*\\|\", text_content\n        ), \"Year label should be in its own cell\"\n        assert re.search(\n            r\"\\| 2022\\s*\\|\", text_content\n        ), \"Year value should be in its own cell\"\n\n        # Validate table structure for estimate totals\n        assert (\n            re.search(r\"\\| Hours\\s*\\|\", text_content) or \"Hours |\" in text_content\n        ), \"Hours column header should be present\"\n        assert (\n            re.search(r\"\\| Rate\\s*\\|\", text_content) or \"Rate |\" in text_content\n        ), \"Rate column header should be present\"\n        assert (\n            re.search(r\"\\| Cost\\s*\\|\", text_content) or \"Cost |\" in text_content\n        ), \"Cost column header should be present\"\n\n        # Validate numeric values are extracted\n        assert \"2,100\" in text_content, \"Parts cost should be extracted\"\n        assert \"300\" in text_content, \"Body labor cost should be extracted\"\n        assert \"225\" in text_content, \"Paint labor cost should be extracted\"\n        assert \"5,738\" in text_content, \"Grand total should be extracted\"\n\n        # Validate second page content (Bruce Wayne invoice)\n        assert \"Bruce Wayne\" in text_content, \"Second page customer name\"\n        assert \"Batmobile\" in text_content, \"Second page vehicle model\"\n        assert \"211,522\" in text_content, \"Second page grand total\"\n\n        # Validate disclaimer text is NOT in table format (long paragraph)\n        # The disclaimer should be extracted as plain text, not pipe-separated\n        assert (\n            \"preliminary estimate\" in text_content.lower()\n        ), \"Disclaimer text should be present\"\n\n    def test_academic_pdf_extraction(self, markitdown):\n        \"\"\"Test extraction of academic paper PDF (scientific document).\n\n        Expected output: Plain text without tables or pipe characters.\n        Scientific documents should be extracted as flowing text with proper spacing,\n        not misinterpreted as tables.\n        \"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"test.pdf\")\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Validate academic paper content with proper spacing\n        expected_strings = [\n            \"Introduction\",\n            \"Large language models\",  # Should have proper spacing, not \"Largelanguagemodels\"\n            \"agents\",\n            \"multi-agent\",  # Should be properly hyphenated\n        ]\n        validate_strings(result, expected_strings)\n\n        # Validate proper text formatting (words separated by spaces)\n        assert \"LLMs\" in text_content, \"Should contain 'LLMs' acronym\"\n        assert \"reasoning\" in text_content, \"Should contain 'reasoning'\"\n        assert \"observations\" in text_content, \"Should contain 'observations'\"\n\n        # Ensure content is not empty and has proper length\n        assert len(text_content) > 1000, \"Academic PDF should have substantial content\"\n\n        # Scientific documents should NOT have tables or pipe characters\n        assert (\n            \"|\" not in text_content\n        ), \"Scientific document should not contain pipe characters (no tables)\"\n\n        # Verify no markdown tables were extracted\n        tables = extract_markdown_tables(text_content)\n        assert (\n            len(tables) == 0\n        ), f\"Scientific document should have no tables, found {len(tables)}\"\n\n        # Verify text is properly formatted with spaces between words\n        # Check that common phrases are NOT joined together (which would indicate bad extraction)\n        assert (\n            \"Largelanguagemodels\" not in text_content\n        ), \"Text should have proper spacing, not joined words\"\n        assert (\n            \"multiagentconversations\" not in text_content.lower()\n        ), \"Text should have proper spacing between words\"\n\n    def test_scanned_pdf_handling(self, markitdown):\n        \"\"\"Test handling of scanned/image-based PDF (no text layer).\n\n        Expected output: Empty - scanned PDFs without OCR have no text layer.\n        \"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"MEDRPT-2024-PAT-3847_medical_report_scan.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n\n        # Scanned PDFs without OCR have no text layer, so extraction should be empty\n        assert (\n            result is not None\n        ), \"Converter should return a result even for scanned PDFs\"\n        assert result.text_content is not None, \"text_content should not be None\"\n\n        # Verify extraction is empty (no text layer in scanned PDF)\n        assert (\n            result.text_content.strip() == \"\"\n        ), f\"Scanned PDF should have empty extraction, got: '{result.text_content[:100]}...'\"\n\n    def test_movie_theater_booking_pdf_extraction(self, markitdown):\n        \"\"\"Test extraction of movie theater booking PDF with complex tables.\n\n        Expected output: Pipe-separated format with booking details, agency info,\n        customer details, and show schedules in structured tables.\n        \"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"movie-theater-booking-2024.pdf\")\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Validate pipe-separated table format\n        assert \"|\" in text_content, \"Booking order should contain pipe separators\"\n\n        # Validate key booking information\n        expected_strings = [\n            \"BOOKING ORDER\",\n            \"2024-12-5678\",  # Order number\n            \"Holiday Movie Marathon Package\",  # Product description\n            \"12/20/2024 - 12/31/2024\",  # Booking dates\n            \"SC-WINTER-2024\",  # Alt order number\n            \"STARLIGHT CINEMAS\",  # Cinema brand\n        ]\n        validate_strings(result, expected_strings)\n\n        # Validate agency information\n        agency_strings = [\n            \"Premier Entertainment Group\",  # Agency name\n            \"Michael Chen\",  # Contact\n            \"Sarah Johnson\",  # Primary contact\n            \"Downtown Multiplex\",  # Cinema name\n        ]\n        validate_strings(result, agency_strings)\n\n        # Validate customer information\n        customer_strings = [\n            \"Universal Studios Distribution\",  # Customer name\n            \"Film Distributor\",  # Category\n            \"CUST-98765\",  # Customer ID\n        ]\n        validate_strings(result, customer_strings)\n\n        # Validate booking summary totals\n        booking_strings = [\n            \"$12,500.00\",  # Gross amount\n            \"$11,250.00\",  # Net amount\n            \"December 2024\",  # Month\n            \"48\",  # Number of shows\n        ]\n        validate_strings(result, booking_strings)\n\n        # Validate show schedule details\n        show_strings = [\n            \"Holiday Spectacular\",  # Movie title\n            \"Winter Wonderland\",  # Movie title\n            \"New Year Mystery\",  # Movie title\n            \"IMAX 3D\",  # Format\n            \"$250\",  # Rate\n            \"$300\",  # Rate\n            \"$3,000\",  # Revenue\n            \"$3,600\",  # Revenue\n        ]\n        validate_strings(result, show_strings)\n\n\nclass TestPdfFullOutputComparison:\n    \"\"\"Test that PDF extraction produces expected complete outputs.\"\"\"\n\n    @pytest.fixture\n    def markitdown(self):\n        \"\"\"Create MarkItDown instance.\"\"\"\n        return MarkItDown()\n\n    def test_movie_theater_full_output(self, markitdown):\n        \"\"\"Test complete output for movie theater booking PDF.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"movie-theater-booking-2024.pdf\")\n        expected_path = os.path.join(\n            TEST_FILES_DIR, \"expected_outputs\", \"movie-theater-booking-2024.md\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Compare outputs\n        actual_lines = [line.rstrip() for line in actual_output.split(\"\\n\")]\n        expected_lines = [line.rstrip() for line in expected_output.split(\"\\n\")]\n\n        # Check line count\n        assert abs(len(actual_lines) - len(expected_lines)) <= 2, (\n            f\"Line count mismatch: actual={len(actual_lines)}, \"\n            f\"expected={len(expected_lines)}\"\n        )\n\n        # Check structural elements\n        assert actual_output.count(\"|\") > 80, \"Should have many pipe separators\"\n        assert actual_output.count(\"---\") > 8, \"Should have table separators\"\n\n        # Validate critical sections\n        for section in [\n            \"BOOKING ORDER\",\n            \"STARLIGHT CINEMAS\",\n            \"2024-12-5678\",\n            \"Holiday Spectacular\",\n            \"$12,500.00\",\n        ]:\n            assert section in actual_output, f\"Missing section: {section}\"\n\n        # Check table structure\n        table_rows = [line for line in actual_lines if line.startswith(\"|\")]\n        assert (\n            len(table_rows) > 15\n        ), f\"Should have >15 table rows, got {len(table_rows)}\"\n\n    def test_sparse_borderless_table_full_output(self, markitdown):\n        \"\"\"Test complete output for SPARSE borderless table PDF.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n        expected_path = os.path.join(\n            TEST_FILES_DIR,\n            \"expected_outputs\",\n            \"SPARSE-2024-INV-1234_borderless_table.md\",\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Compare outputs\n        actual_lines = [line.rstrip() for line in actual_output.split(\"\\n\")]\n        expected_lines = [line.rstrip() for line in expected_output.split(\"\\n\")]\n\n        # Check line count is close\n        assert abs(len(actual_lines) - len(expected_lines)) <= 2, (\n            f\"Line count mismatch: actual={len(actual_lines)}, \"\n            f\"expected={len(expected_lines)}\"\n        )\n\n        # Check structural elements\n        assert actual_output.count(\"|\") > 50, \"Should have many pipe separators\"\n\n        # Validate critical sections\n        for section in [\n            \"INVENTORY RECONCILIATION REPORT\",\n            \"SPARSE-2024-INV-1234\",\n            \"SKU-8847\",\n            \"SKU-9201\",\n            \"Variance Analysis\",\n        ]:\n            assert section in actual_output, f\"Missing section: {section}\"\n\n    def test_repair_multipage_full_output(self, markitdown):\n        \"\"\"Test complete output for REPAIR multipage invoice PDF.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"REPAIR-2022-INV-001_multipage.pdf\")\n        expected_path = os.path.join(\n            TEST_FILES_DIR, \"expected_outputs\", \"REPAIR-2022-INV-001_multipage.md\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Compare outputs\n        actual_lines = [line.rstrip() for line in actual_output.split(\"\\n\")]\n        expected_lines = [line.rstrip() for line in expected_output.split(\"\\n\")]\n\n        # Check line count is close\n        assert abs(len(actual_lines) - len(expected_lines)) <= 2, (\n            f\"Line count mismatch: actual={len(actual_lines)}, \"\n            f\"expected={len(expected_lines)}\"\n        )\n\n        # Check structural elements\n        assert actual_output.count(\"|\") > 40, \"Should have many pipe separators\"\n\n        # Validate critical sections\n        for section in [\n            \"ZAVA AUTO REPAIR\",\n            \"Gabriel Diaz\",\n            \"Jeep\",\n            \"Grand Cherokee\",\n            \"GRAND TOTAL\",\n        ]:\n            assert section in actual_output, f\"Missing section: {section}\"\n\n    def test_receipt_full_output(self, markitdown):\n        \"\"\"Test complete output for RECEIPT retail purchase PDF.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"RECEIPT-2024-TXN-98765_retail_purchase.pdf\"\n        )\n        expected_path = os.path.join(\n            TEST_FILES_DIR,\n            \"expected_outputs\",\n            \"RECEIPT-2024-TXN-98765_retail_purchase.md\",\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Compare outputs\n        actual_lines = [line.rstrip() for line in actual_output.split(\"\\n\")]\n        expected_lines = [line.rstrip() for line in expected_output.split(\"\\n\")]\n\n        # Check line count is close\n        assert abs(len(actual_lines) - len(expected_lines)) <= 2, (\n            f\"Line count mismatch: actual={len(actual_lines)}, \"\n            f\"expected={len(expected_lines)}\"\n        )\n\n        # Validate critical sections\n        for section in [\n            \"TECHMART ELECTRONICS\",\n            \"TXN-98765-2024\",\n            \"Sarah Mitchell\",\n            \"$821.14\",\n            \"RETURN POLICY\",\n        ]:\n            assert section in actual_output, f\"Missing section: {section}\"\n\n    def test_academic_paper_full_output(self, markitdown):\n        \"\"\"Test complete output for academic paper PDF.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"test.pdf\")\n        expected_path = os.path.join(TEST_FILES_DIR, \"expected_outputs\", \"test.md\")\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Compare outputs\n        actual_lines = [line.rstrip() for line in actual_output.split(\"\\n\")]\n        expected_lines = [line.rstrip() for line in expected_output.split(\"\\n\")]\n\n        # Check line count is close\n        assert abs(len(actual_lines) - len(expected_lines)) <= 2, (\n            f\"Line count mismatch: actual={len(actual_lines)}, \"\n            f\"expected={len(expected_lines)}\"\n        )\n\n        # Academic paper should not have pipe separators\n        assert (\n            actual_output.count(\"|\") == 0\n        ), \"Academic paper should not have pipe separators\"\n\n        # Validate critical sections\n        for section in [\n            \"Introduction\",\n            \"Large language models\",\n            \"agents\",\n            \"multi-agent\",\n        ]:\n            assert section in actual_output, f\"Missing section: {section}\"\n\n    def test_medical_scan_full_output(self, markitdown):\n        \"\"\"Test complete output for medical report scan PDF (empty, no text layer).\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"MEDRPT-2024-PAT-3847_medical_report_scan.pdf\"\n        )\n        expected_path = os.path.join(\n            TEST_FILES_DIR,\n            \"expected_outputs\",\n            \"MEDRPT-2024-PAT-3847_medical_report_scan.md\",\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        if not os.path.exists(expected_path):\n            pytest.skip(f\"Expected output not found: {expected_path}\")\n\n        result = markitdown.convert(pdf_path)\n        actual_output = result.text_content\n\n        with open(expected_path, \"r\", encoding=\"utf-8\") as f:\n            expected_output = f.read()\n\n        # Both should be empty (scanned PDF with no text layer)\n        assert actual_output.strip() == \"\", \"Scanned PDF should produce empty output\"\n        assert (\n            expected_output.strip() == \"\"\n        ), \"Expected output should be empty for scanned PDF\"\n\n\nclass TestPdfTableMarkdownFormat:\n    \"\"\"Test that extracted tables have proper markdown formatting.\"\"\"\n\n    @pytest.fixture\n    def markitdown(self):\n        \"\"\"Create MarkItDown instance.\"\"\"\n        return MarkItDown()\n\n    def test_markdown_table_has_pipe_format(self, markitdown):\n        \"\"\"Test that form-style PDFs have pipe-separated format.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Find rows with pipes\n        lines = text_content.split(\"\\n\")\n        pipe_rows = [\n            line for line in lines if line.startswith(\"|\") and line.endswith(\"|\")\n        ]\n\n        assert len(pipe_rows) > 0, \"Should have pipe-separated rows\"\n\n        # Check that Product Code appears in a pipe-separated row\n        product_code_found = any(\"Product Code\" in row for row in pipe_rows)\n        assert product_code_found, \"Product Code should be in pipe-separated format\"\n\n    def test_markdown_table_columns_have_pipes(self, markitdown):\n        \"\"\"Test that form-style PDF columns are separated with pipes.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Find table rows and verify column structure\n        lines = text_content.split(\"\\n\")\n        table_rows = [\n            line for line in lines if line.startswith(\"|\") and line.endswith(\"|\")\n        ]\n\n        assert len(table_rows) > 0, \"Should have markdown table rows\"\n\n        # Check that at least some rows have multiple columns (pipes)\n        multi_col_rows = [row for row in table_rows if row.count(\"|\") >= 3]\n        assert (\n            len(multi_col_rows) > 5\n        ), f\"Should have rows with multiple columns, found {len(multi_col_rows)}\"\n\n\nclass TestPdfTableStructureConsistency:\n    \"\"\"Test that extracted tables have consistent structure across all PDF types.\"\"\"\n\n    @pytest.fixture\n    def markitdown(self):\n        \"\"\"Create MarkItDown instance.\"\"\"\n        return MarkItDown()\n\n    def test_borderless_table_structure(self, markitdown):\n        \"\"\"Test that borderless table PDF has pipe-separated structure.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Should have pipe-separated content\n        assert \"|\" in text_content, \"Borderless table PDF should have pipe separators\"\n\n        # Check that key content is present\n        assert \"Product Code\" in text_content, \"Should contain Product Code\"\n        assert \"SKU-8847\" in text_content, \"Should contain first SKU\"\n        assert \"SKU-9201\" in text_content, \"Should contain second SKU\"\n\n    def test_multipage_invoice_table_structure(self, markitdown):\n        \"\"\"Test that multipage invoice PDF has pipe-separated format.\"\"\"\n        pdf_path = os.path.join(TEST_FILES_DIR, \"REPAIR-2022-INV-001_multipage.pdf\")\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        text_content = result.text_content\n\n        # Should have pipe-separated content\n        assert \"|\" in text_content, \"Invoice PDF should have pipe separators\"\n\n        # Find rows with pipes\n        lines = text_content.split(\"\\n\")\n        pipe_rows = [\n            line for line in lines if line.startswith(\"|\") and line.endswith(\"|\")\n        ]\n\n        assert (\n            len(pipe_rows) > 10\n        ), f\"Should have multiple pipe-separated rows, found {len(pipe_rows)}\"\n\n        # Check that some rows have multiple columns\n        multi_col_rows = [row for row in pipe_rows if row.count(\"|\") >= 4]\n        assert len(multi_col_rows) > 5, \"Should have rows with 3+ columns\"\n\n    def test_receipt_has_no_tables(self, markitdown):\n        \"\"\"Test that receipt PDF doesn't incorrectly extract tables from formatted text.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"RECEIPT-2024-TXN-98765_retail_purchase.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        tables = extract_markdown_tables(result.text_content)\n\n        # Receipt should not have markdown tables extracted\n        # (it's formatted text, not tabular data)\n        # If tables are extracted, they should be minimal/empty\n        total_table_rows = sum(len(t) for t in tables)\n        assert (\n            total_table_rows < 5\n        ), f\"Receipt should not have significant tables, found {total_table_rows} rows\"\n\n    def test_scanned_pdf_no_tables(self, markitdown):\n        \"\"\"Test that scanned PDF has empty extraction and no tables.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"MEDRPT-2024-PAT-3847_medical_report_scan.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n\n        # Scanned PDF with no text layer should have empty extraction\n        assert (\n            result.text_content.strip() == \"\"\n        ), \"Scanned PDF should have empty extraction\"\n\n        tables = extract_markdown_tables(result.text_content)\n\n        # Scanned PDF with no text layer should have no tables\n        assert len(tables) == 0, \"Scanned PDF should have no extracted tables\"\n\n    def test_all_pdfs_table_rows_consistent(self, markitdown):\n        \"\"\"Test that all PDF tables have rows with pipe-separated content.\n\n        Note: With gap-based column detection, rows may have different column counts\n        depending on how content is spaced in the PDF. What's important is that each\n        row has pipe separators and the content is readable.\n        \"\"\"\n        pdf_files = [\n            \"SPARSE-2024-INV-1234_borderless_table.pdf\",\n            \"REPAIR-2022-INV-001_multipage.pdf\",\n            \"RECEIPT-2024-TXN-98765_retail_purchase.pdf\",\n            \"test.pdf\",\n        ]\n\n        for pdf_file in pdf_files:\n            pdf_path = os.path.join(TEST_FILES_DIR, pdf_file)\n            if not os.path.exists(pdf_path):\n                continue\n\n            result = markitdown.convert(pdf_path)\n            tables = extract_markdown_tables(result.text_content)\n\n            for table_idx, table in enumerate(tables):\n                if not table:\n                    continue\n\n                # Verify each row has at least one column (pipe-separated content)\n                for row_idx, row in enumerate(table):\n                    assert (\n                        len(row) >= 1\n                    ), f\"{pdf_file}: Table {table_idx}, row {row_idx} has no columns\"\n\n                    # Verify the row has non-empty content\n                    row_content = \" \".join(cell.strip() for cell in row)\n                    assert (\n                        len(row_content.strip()) > 0\n                    ), f\"{pdf_file}: Table {table_idx}, row {row_idx} is empty\"\n\n    def test_borderless_table_data_integrity(self, markitdown):\n        \"\"\"Test that borderless table extraction preserves data integrity.\"\"\"\n        pdf_path = os.path.join(\n            TEST_FILES_DIR, \"SPARSE-2024-INV-1234_borderless_table.pdf\"\n        )\n\n        if not os.path.exists(pdf_path):\n            pytest.skip(f\"Test file not found: {pdf_path}\")\n\n        result = markitdown.convert(pdf_path)\n        tables = extract_markdown_tables(result.text_content)\n\n        assert len(tables) >= 2, \"Should have at least 2 tables\"\n\n        # Check first table has expected SKU data\n        first_table = tables[0]\n        table_text = str(first_table)\n        assert \"SKU-8847\" in table_text, \"First table should contain SKU-8847\"\n        assert \"SKU-9201\" in table_text, \"First table should contain SKU-9201\"\n\n        # Check second table has expected category data\n        second_table = tables[1]\n        table_text = str(second_table)\n        assert \"Electronics\" in table_text, \"Second table should contain Electronics\"\n        assert \"Hardware\" in table_text, \"Second table should contain Hardware\"\n"
  },
  {
    "path": "packages/markitdown-mcp/Dockerfile",
    "content": "FROM python:3.13-slim-bullseye\n\nENV DEBIAN_FRONTEND=noninteractive\nENV EXIFTOOL_PATH=/usr/bin/exiftool\nENV FFMPEG_PATH=/usr/bin/ffmpeg\nENV MARKITDOWN_ENABLE_PLUGINS=True\n\n# Runtime dependency\n# NOTE: Add any additional MarkItDown plugins here\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n    ffmpeg \\\n    exiftool\n\n# Cleanup\nRUN rm -rf /var/lib/apt/lists/*\n\nCOPY . /app\nRUN pip --no-cache-dir install /app\n\nWORKDIR /workdir\n\n# Default USERID and GROUPID\nARG USERID=nobody\nARG GROUPID=nogroup\n\nUSER $USERID:$GROUPID\n\nENTRYPOINT [ \"markitdown-mcp\" ]\n"
  },
  {
    "path": "packages/markitdown-mcp/README.md",
    "content": "# MarkItDown-MCP\n\n[![PyPI](https://img.shields.io/pypi/v/markitdown-mcp.svg)](https://pypi.org/project/markitdown-mcp/)\n![PyPI - Downloads](https://img.shields.io/pypi/dd/markitdown-mcp)\n[![Built by AutoGen Team](https://img.shields.io/badge/Built%20by-AutoGen%20Team-blue)](https://github.com/microsoft/autogen)\n\nThe `markitdown-mcp` package provides a lightweight STDIO, Streamable HTTP, and SSE MCP server for calling MarkItDown.\n\nIt exposes one tool: `convert_to_markdown(uri)`, where uri can be any `http:`, `https:`, `file:`, or `data:` URI.\n\n## Installation\n\nTo install the package, use pip:\n\n```bash\npip install markitdown-mcp\n```\n\n## Usage\n\nTo run the MCP server, using STDIO (default) use the following command:\n\n\n```bash\t\nmarkitdown-mcp\n```\n\nTo run the MCP server, using Streamable HTTP and SSE use the following command:\n\n```bash\t\nmarkitdown-mcp --http --host 127.0.0.1 --port 3001\n```\n\n## Running in Docker\n\nTo run `markitdown-mcp` in Docker, build the Docker image using the provided Dockerfile:\n```bash\ndocker build -t markitdown-mcp:latest .\n```\n\nAnd run it using:\n```bash\ndocker run -it --rm markitdown-mcp:latest\n```\nThis will be sufficient for remote URIs. To access local files, you need to mount the local directory into the container. For example, if you want to access files in `/home/user/data`, you can run:\n\n```bash\ndocker run -it --rm -v /home/user/data:/workdir markitdown-mcp:latest\n```\n\nOnce mounted, all files under data will be accessible under `/workdir` in the container. For example, if you have a file `example.txt` in `/home/user/data`, it will be accessible in the container at `/workdir/example.txt`.\n\n## Accessing from Claude Desktop\n\nIt is recommended to use the Docker image when running the MCP server for Claude Desktop.\n\nFollow [these instructions](https://modelcontextprotocol.io/quickstart/user#for-claude-desktop-users) to access Claude's `claude_desktop_config.json` file.\n\nEdit it to include the following JSON entry:\n\n```json\n{\n  \"mcpServers\": {\n    \"markitdown\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"--rm\",\n        \"-i\",\n        \"markitdown-mcp:latest\"\n      ]\n    }\n  }\n}\n```\n\nIf you want to mount a directory, adjust it accordingly:\n\n```json\n{\n  \"mcpServers\": {\n    \"markitdown\": {\n      \"command\": \"docker\",\n      \"args\": [\n\t\"run\",\n\t\"--rm\",\n\t\"-i\",\n\t\"-v\",\n\t\"/home/user/data:/workdir\",\n\t\"markitdown-mcp:latest\"\n      ]\n    }\n  }\n}\n```\n\n## Debugging\n\nTo debug the MCP server you can use the `mcpinspector` tool.\n\n```bash\nnpx @modelcontextprotocol/inspector\n```\n\nYou can then connect to the inspector through the specified host and port (e.g., `http://localhost:5173/`).\n\nIf using STDIO:\n* select `STDIO` as the transport type,\n* input `markitdown-mcp` as the command, and\n* click `Connect`\n\nIf using Streamable HTTP:\n* select `Streamable HTTP` as the transport type,\n* input `http://127.0.0.1:3001/mcp` as the URL, and\n* click `Connect`\n\nIf using SSE:\n* select `SSE` as the transport type,\n* input `http://127.0.0.1:3001/sse` as the URL, and\n* click `Connect`\n\nFinally:\n* click the `Tools` tab,\n* click `List Tools`,\n* click `convert_to_markdown`, and\n* run the tool on any valid URI.\n\n## Security Considerations\n\nThe server does not support authentication, and runs with the privileges of the user running it. For this reason, when running in SSE or Streamable HTTP mode, it is recommended to run the server bound to `localhost` (default).\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft\ntrademarks or logos is subject to and must follow\n[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n"
  },
  {
    "path": "packages/markitdown-mcp/pyproject.toml",
    "content": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"markitdown-mcp\"\ndynamic = [\"version\"]\ndescription = 'An MCP server for the \"markitdown\" library.'\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = \"MIT\"\nkeywords = []\nauthors = [\n  { name = \"Adam Fourney\", email = \"adamfo@microsoft.com\" },\n]\nclassifiers = [\n  \"Development Status :: 4 - Beta\",\n  \"Programming Language :: Python\",\n  \"Programming Language :: Python :: 3.10\",\n  \"Programming Language :: Python :: 3.11\",\n  \"Programming Language :: Python :: 3.12\",\n  \"Programming Language :: Python :: 3.13\",\n  \"Programming Language :: Python :: Implementation :: CPython\",\n  \"Programming Language :: Python :: Implementation :: PyPy\",\n]\ndependencies = [\n  \"mcp~=1.8.0\",\n  \"markitdown[all]>=0.1.1,<0.2.0\",\n]\n\n[project.urls]\nDocumentation = \"https://github.com/microsoft/markitdown#readme\"\nIssues = \"https://github.com/microsoft/markitdown/issues\"\nSource = \"https://github.com/microsoft/markitdown\"\n\n[tool.hatch.version]\npath = \"src/markitdown_mcp/__about__.py\"\n\n[project.scripts]\nmarkitdown-mcp = \"markitdown_mcp.__main__:main\"\n\n[tool.hatch.envs.types]\nextra-dependencies = [\n  \"mypy>=1.0.0\",\n]\n[tool.hatch.envs.types.scripts]\ncheck = \"mypy --install-types --non-interactive {args:src/markitdown_mcp tests}\"\n\n[tool.coverage.run]\nsource_pkgs = [\"markitdown-mcp\", \"tests\"]\nbranch = true\nparallel = true\nomit = [\n  \"src/markitdown_mcp/__about__.py\",\n]\n\n[tool.coverage.paths]\nmarkitdown-mcp = [\"src/markitdown_mcp\", \"*/markitdown-mcp/src/markitdown_mcp\"]\ntests = [\"tests\", \"*/markitdown-mcp/tests\"]\n\n[tool.coverage.report]\nexclude_lines = [\n  \"no cov\",\n  \"if __name__ == .__main__.:\",\n  \"if TYPE_CHECKING:\",\n]\n\n[tool.hatch.build.targets.sdist]\nonly-include = [\"src/markitdown_mcp\"]\n"
  },
  {
    "path": "packages/markitdown-mcp/src/markitdown_mcp/__about__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n__version__ = \"0.0.1a4\"\n"
  },
  {
    "path": "packages/markitdown-mcp/src/markitdown_mcp/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n\nfrom .__about__ import __version__\n\n__all__ = [\n    \"__version__\",\n]\n"
  },
  {
    "path": "packages/markitdown-mcp/src/markitdown_mcp/__main__.py",
    "content": "import contextlib\nimport sys\nimport os\nfrom collections.abc import AsyncIterator\nfrom mcp.server.fastmcp import FastMCP\nfrom starlette.applications import Starlette\nfrom mcp.server.sse import SseServerTransport\nfrom starlette.requests import Request\nfrom starlette.routing import Mount, Route\nfrom starlette.types import Receive, Scope, Send\nfrom mcp.server import Server\nfrom mcp.server.streamable_http_manager import StreamableHTTPSessionManager\nfrom markitdown import MarkItDown\nimport uvicorn\n\n# Initialize FastMCP server for MarkItDown (SSE)\nmcp = FastMCP(\"markitdown\")\n\n\n@mcp.tool()\nasync def convert_to_markdown(uri: str) -> str:\n    \"\"\"Convert a resource described by an http:, https:, file: or data: URI to markdown\"\"\"\n    return MarkItDown(enable_plugins=check_plugins_enabled()).convert_uri(uri).markdown\n\n\ndef check_plugins_enabled() -> bool:\n    return os.getenv(\"MARKITDOWN_ENABLE_PLUGINS\", \"false\").strip().lower() in (\n        \"true\",\n        \"1\",\n        \"yes\",\n    )\n\n\ndef create_starlette_app(mcp_server: Server, *, debug: bool = False) -> Starlette:\n    sse = SseServerTransport(\"/messages/\")\n    session_manager = StreamableHTTPSessionManager(\n        app=mcp_server,\n        event_store=None,\n        json_response=True,\n        stateless=True,\n    )\n\n    async def handle_sse(request: Request) -> None:\n        async with sse.connect_sse(\n            request.scope,\n            request.receive,\n            request._send,\n        ) as (read_stream, write_stream):\n            await mcp_server.run(\n                read_stream,\n                write_stream,\n                mcp_server.create_initialization_options(),\n            )\n\n    async def handle_streamable_http(\n        scope: Scope, receive: Receive, send: Send\n    ) -> None:\n        await session_manager.handle_request(scope, receive, send)\n\n    @contextlib.asynccontextmanager\n    async def lifespan(app: Starlette) -> AsyncIterator[None]:\n        \"\"\"Context manager for session manager.\"\"\"\n        async with session_manager.run():\n            print(\"Application started with StreamableHTTP session manager!\")\n            try:\n                yield\n            finally:\n                print(\"Application shutting down...\")\n\n    return Starlette(\n        debug=debug,\n        routes=[\n            Route(\"/sse\", endpoint=handle_sse),\n            Mount(\"/mcp\", app=handle_streamable_http),\n            Mount(\"/messages/\", app=sse.handle_post_message),\n        ],\n        lifespan=lifespan,\n    )\n\n\n# Main entry point\ndef main():\n    import argparse\n\n    mcp_server = mcp._mcp_server\n\n    parser = argparse.ArgumentParser(description=\"Run a MarkItDown MCP server\")\n\n    parser.add_argument(\n        \"--http\",\n        action=\"store_true\",\n        help=\"Run the server with Streamable HTTP and SSE transport rather than STDIO (default: False)\",\n    )\n    parser.add_argument(\n        \"--sse\",\n        action=\"store_true\",\n        help=\"(Deprecated) An alias for --http (default: False)\",\n    )\n    parser.add_argument(\n        \"--host\", default=None, help=\"Host to bind to (default: 127.0.0.1)\"\n    )\n    parser.add_argument(\n        \"--port\", type=int, default=None, help=\"Port to listen on (default: 3001)\"\n    )\n    args = parser.parse_args()\n\n    use_http = args.http or args.sse\n\n    if not use_http and (args.host or args.port):\n        parser.error(\n            \"Host and port arguments are only valid when using streamable HTTP or SSE transport (see: --http).\"\n        )\n        sys.exit(1)\n\n    if use_http:\n        starlette_app = create_starlette_app(mcp_server, debug=True)\n        uvicorn.run(\n            starlette_app,\n            host=args.host if args.host else \"127.0.0.1\",\n            port=args.port if args.port else 3001,\n        )\n    else:\n        mcp.run()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "packages/markitdown-mcp/src/markitdown_mcp/py.typed",
    "content": ""
  },
  {
    "path": "packages/markitdown-mcp/tests/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n"
  },
  {
    "path": "packages/markitdown-ocr/LICENSE",
    "content": "    MIT License\n\n    Copyright (c) Microsoft Corporation.\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE\n"
  },
  {
    "path": "packages/markitdown-ocr/README.md",
    "content": "# MarkItDown OCR Plugin\n\nLLM Vision plugin for MarkItDown that extracts text from images embedded in PDF, DOCX, PPTX, and XLSX files.\n\nUses the same `llm_client` / `llm_model` pattern that MarkItDown already supports for image descriptions — no new ML libraries or binary dependencies required.\n\n## Features\n\n- **Enhanced PDF Converter**: Extracts text from images within PDFs, with full-page OCR fallback for scanned documents\n- **Enhanced DOCX Converter**: OCR for images in Word documents\n- **Enhanced PPTX Converter**: OCR for images in PowerPoint presentations\n- **Enhanced XLSX Converter**: OCR for images in Excel spreadsheets\n- **Context Preservation**: Maintains document structure and flow when inserting extracted text\n\n## Installation\n\n```bash\npip install markitdown-ocr\n```\n\nThe plugin uses whatever OpenAI-compatible client you already have. Install one if you don't have it yet:\n\n```bash\npip install openai\n```\n\n## Usage\n\n### Command Line\n\n```bash\nmarkitdown document.pdf --use-plugins --llm-client openai --llm-model gpt-4o\n```\n\n### Python API\n\nPass `llm_client` and `llm_model` to `MarkItDown()` exactly as you would for image descriptions:\n\n```python\nfrom markitdown import MarkItDown\nfrom openai import OpenAI\n\nmd = MarkItDown(\n    enable_plugins=True,\n    llm_client=OpenAI(),\n    llm_model=\"gpt-4o\",\n)\n\nresult = md.convert(\"document_with_images.pdf\")\nprint(result.text_content)\n```\n\nIf no `llm_client` is provided the plugin still loads, but OCR is silently skipped — falling back to the standard built-in converter.\n\n### Custom Prompt\n\nOverride the default extraction prompt for specialized documents:\n\n```python\nmd = MarkItDown(\n    enable_plugins=True,\n    llm_client=OpenAI(),\n    llm_model=\"gpt-4o\",\n    llm_prompt=\"Extract all text from this image, preserving table structure.\",\n)\n```\n\n### Any OpenAI-Compatible Client\n\nWorks with any client that follows the OpenAI API:\n\n```python\nfrom openai import AzureOpenAI\n\nmd = MarkItDown(\n    enable_plugins=True,\n    llm_client=AzureOpenAI(\n        api_key=\"...\",\n        azure_endpoint=\"https://your-resource.openai.azure.com/\",\n        api_version=\"2024-02-01\",\n    ),\n    llm_model=\"gpt-4o\",\n)\n```\n\n## How It Works\n\nWhen `MarkItDown(enable_plugins=True, llm_client=..., llm_model=...)` is called:\n\n1. MarkItDown discovers the plugin via the `markitdown.plugin` entry point group\n2. It calls `register_converters()`, forwarding all kwargs including `llm_client` and `llm_model`\n3. The plugin creates an `LLMVisionOCRService` from those kwargs\n4. Four OCR-enhanced converters are registered at **priority -1.0** — before the built-in converters at priority 0.0\n\nWhen a file is converted:\n\n1. The OCR converter accepts the file\n2. It extracts embedded images from the document\n3. Each image is sent to the LLM with an extraction prompt\n4. The returned text is inserted inline, preserving document structure\n5. If the LLM call fails, conversion continues without that image's text\n\n## Supported File Formats\n\n### PDF\n\n- Embedded images are extracted by position (via `page.images` / page XObjects) and OCR'd inline, interleaved with the surrounding text in vertical reading order.\n- **Scanned PDFs** (pages with no extractable text) are detected automatically: each page is rendered at 300 DPI and sent to the LLM as a full-page image.\n- **Malformed PDFs** that pdfplumber/pdfminer cannot open (e.g. truncated EOF) are retried with PyMuPDF page rendering, so content is still recovered.\n\n### DOCX\n\n- Images are extracted via document part relationships (`doc.part.rels`).\n- OCR is run before the DOCX→HTML→Markdown pipeline executes: placeholder tokens are injected into the HTML so that the markdown converter does not escape the OCR markers, and the final placeholders are replaced with the formatted `*[Image OCR]...[End OCR]*` blocks after conversion.\n- Document flow (headings, paragraphs, tables) is fully preserved around the OCR blocks.\n\n### PPTX\n\n- Picture shapes, placeholder shapes with images, and images inside groups are all supported.\n- Shapes are processed in top-to-left reading order per slide.\n- If an `llm_client` is configured, the LLM is asked for a description first; OCR is used as the fallback when no description is returned.\n\n### XLSX\n\n- Images embedded in worksheets (`sheet._images`) are extracted per sheet.\n- Cell position is calculated from the image anchor coordinates (column/row → Excel letter notation).\n- Images are listed under a `### Images in this sheet:` section after the sheet's data table — they are not interleaved into the table rows.\n\n### Output format\n\nEvery extracted OCR block is wrapped as:\n\n```text\n*[Image OCR]\n<extracted text>\n[End OCR]*\n```\n\n## Troubleshooting\n\n### OCR text missing from output\n\nThe most likely cause is a missing `llm_client` or `llm_model`. Verify:\n\n```python\nfrom openai import OpenAI\nfrom markitdown import MarkItDown\n\nmd = MarkItDown(\n    enable_plugins=True,\n    llm_client=OpenAI(),   # required\n    llm_model=\"gpt-4o\",    # required\n)\n```\n\n### Plugin not loading\n\nConfirm the plugin is installed and discovered:\n\n```bash\nmarkitdown --list-plugins   # should show: ocr\n```\n\n### API errors\n\nThe plugin propagates LLM API errors as warnings and continues conversion. Check your API key, quota, and that the chosen model supports vision inputs.\n\n## Development\n\n### Running Tests\n\n```bash\ncd packages/markitdown-ocr\npytest tests/ -v\n```\n\n### Building from Source\n\n```bash\ngit clone https://github.com/microsoft/markitdown.git\ncd markitdown/packages/markitdown-ocr\npip install -e .\n```\n\n## Contributing\n\nContributions are welcome! See the [MarkItDown repository](https://github.com/microsoft/markitdown) for guidelines.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Changelog\n\n### 0.1.0 (Initial Release)\n\n- LLM Vision OCR for PDF, DOCX, PPTX, XLSX\n- Full-page OCR fallback for scanned PDFs\n- Context-aware inline text insertion\n- Priority-based converter replacement (no code changes required)\n"
  },
  {
    "path": "packages/markitdown-ocr/pyproject.toml",
    "content": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"markitdown-ocr\"\ndynamic = [\"version\"]\ndescription = 'OCR plugin for MarkItDown - Extracts text from images in PDF, DOCX, PPTX, and XLSX via LLM Vision'\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = \"MIT\"\nkeywords = [\"markitdown\", \"ocr\", \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"llm\", \"vision\"]\nauthors = [\n  { name = \"Contributors\", email = \"noreply@github.com\" },\n]\nclassifiers = [\n  \"Development Status :: 4 - Beta\",\n  \"Programming Language :: Python\",\n  \"Programming Language :: Python :: 3.10\",\n  \"Programming Language :: Python :: 3.11\",\n  \"Programming Language :: Python :: 3.12\",\n  \"Programming Language :: Python :: 3.13\",\n  \"Programming Language :: Python :: Implementation :: CPython\",\n]\n\n# Core dependencies — matches the file-format libraries markitdown already uses\ndependencies = [\n  \"markitdown>=0.1.0\",\n  \"pdfminer.six>=20251230\",\n  \"pdfplumber>=0.11.9\",\n  \"PyMuPDF>=1.24.0\",\n  \"mammoth~=1.11.0\",\n  \"python-docx\",\n  \"python-pptx\",\n  \"pandas\",\n  \"openpyxl\",\n  \"Pillow>=9.0.0\",\n]\n\n# llm_client is passed in by the user (same as for markitdown image descriptions);\n# install openai or any OpenAI-compatible SDK separately.\n[project.optional-dependencies]\nllm = [\n  \"openai>=1.0.0\",\n]\n\n[project.urls]\nDocumentation = \"https://github.com/microsoft/markitdown#readme\"\nIssues = \"https://github.com/microsoft/markitdown/issues\"\nSource = \"https://github.com/microsoft/markitdown\"\n\n[tool.hatch.version]\npath = \"src/markitdown_ocr/__about__.py\"\n\n# CRITICAL: Plugin entry point - MarkItDown will discover this plugin through this entry point\n[project.entry-points.\"markitdown.plugin\"]\nocr = \"markitdown_ocr\"\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/__about__.py",
    "content": "# SPDX-FileCopyrightText: 2025-present Contributors\n# SPDX-License-Identifier: MIT\n\n__version__ = \"0.1.0\"\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2025-present Contributors\n# SPDX-License-Identifier: MIT\n\n\"\"\"\nmarkitdown-ocr: OCR plugin for MarkItDown\n\nAdds LLM Vision-based text extraction from images embedded in PDF, DOCX, PPTX, and XLSX files.\n\"\"\"\n\nfrom ._plugin import __plugin_interface_version__, register_converters\nfrom .__about__ import __version__\nfrom ._ocr_service import (\n    OCRResult,\n    LLMVisionOCRService,\n)\nfrom ._pdf_converter_with_ocr import PdfConverterWithOCR\nfrom ._docx_converter_with_ocr import DocxConverterWithOCR\nfrom ._pptx_converter_with_ocr import PptxConverterWithOCR\nfrom ._xlsx_converter_with_ocr import XlsxConverterWithOCR\n\n__all__ = [\n    \"__version__\",\n    \"__plugin_interface_version__\",\n    \"register_converters\",\n    \"OCRResult\",\n    \"LLMVisionOCRService\",\n    \"PdfConverterWithOCR\",\n    \"DocxConverterWithOCR\",\n    \"PptxConverterWithOCR\",\n    \"XlsxConverterWithOCR\",\n]\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_docx_converter_with_ocr.py",
    "content": "\"\"\"\nEnhanced DOCX Converter with OCR support for embedded images.\nExtracts images from Word documents and performs OCR while maintaining context.\n\"\"\"\n\nimport io\nimport re\nimport sys\nfrom typing import Any, BinaryIO, Optional\n\nfrom markitdown.converters import HtmlConverter\nfrom markitdown.converter_utils.docx.pre_process import pre_process_docx\nfrom markitdown import DocumentConverterResult, StreamInfo\nfrom markitdown._exceptions import (\n    MissingDependencyException,\n    MISSING_DEPENDENCY_MESSAGE,\n)\nfrom ._ocr_service import LLMVisionOCRService\n\n# Try loading dependencies\n_dependency_exc_info = None\ntry:\n    import mammoth\n    from docx import Document\nexcept ImportError:\n    _dependency_exc_info = sys.exc_info()\n\n# Placeholder injected into HTML so that mammoth never sees the OCR markers.\n# Must be a single token with no special markdown characters.\n_PLACEHOLDER = \"MARKITDOWNOCRBLOCK{}\"\n\n\nclass DocxConverterWithOCR(HtmlConverter):\n    \"\"\"\n    Enhanced DOCX Converter with OCR support for embedded images.\n    Maintains document flow while extracting text from images inline.\n    \"\"\"\n\n    def __init__(self, ocr_service: Optional[LLMVisionOCRService] = None):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n        self.ocr_service = ocr_service\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension == \".docx\":\n            return True\n\n        if mimetype.startswith(\n            \"application/vnd.openxmlformats-officedocument.wordprocessingml\"\n        ):\n            return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".docx\",\n                    feature=\"docx\",\n                )\n            ) from _dependency_exc_info[1].with_traceback(\n                _dependency_exc_info[2]\n            )  # type: ignore[union-attr]\n\n        # Get OCR service if available (from kwargs or instance)\n        ocr_service: Optional[LLMVisionOCRService] = (\n            kwargs.get(\"ocr_service\") or self.ocr_service\n        )\n\n        if ocr_service:\n            # 1. Extract and OCR images — returns raw text per image\n            file_stream.seek(0)\n            image_ocr_map = self._extract_and_ocr_images(file_stream, ocr_service)\n\n            # 2. Convert DOCX → HTML via mammoth\n            file_stream.seek(0)\n            pre_process_stream = pre_process_docx(file_stream)\n            html_result = mammoth.convert_to_html(\n                pre_process_stream, style_map=kwargs.get(\"style_map\")\n            ).value\n\n            # 3. Replace <img> tags with plain placeholder tokens so that\n            #    mammoth's HTML→markdown step never escapes our OCR markers.\n            html_with_placeholders, ocr_texts = self._inject_placeholders(\n                html_result, image_ocr_map\n            )\n\n            # 4. Convert HTML → markdown\n            md_result = self._html_converter.convert_string(\n                html_with_placeholders, **kwargs\n            )\n            md = md_result.markdown\n\n            # 5. Swap placeholders for the actual OCR blocks (post-conversion\n            #    so * and _ are never escaped by the markdown converter).\n            for i, raw_text in enumerate(ocr_texts):\n                placeholder = _PLACEHOLDER.format(i)\n                ocr_block = f\"*[Image OCR]\\n{raw_text}\\n[End OCR]*\"\n                md = md.replace(placeholder, ocr_block)\n\n            return DocumentConverterResult(markdown=md)\n        else:\n            # Standard conversion without OCR\n            style_map = kwargs.get(\"style_map\", None)\n            pre_process_stream = pre_process_docx(file_stream)\n            return self._html_converter.convert_string(\n                mammoth.convert_to_html(pre_process_stream, style_map=style_map).value,\n                **kwargs,\n            )\n\n    def _extract_and_ocr_images(\n        self, file_stream: BinaryIO, ocr_service: LLMVisionOCRService\n    ) -> dict[str, str]:\n        \"\"\"\n        Extract images from DOCX and OCR them.\n\n        Returns:\n            Dict mapping image relationship IDs to raw OCR text (no markers).\n        \"\"\"\n        ocr_map = {}\n\n        try:\n            file_stream.seek(0)\n            doc = Document(file_stream)\n\n            for rel in doc.part.rels.values():\n                if \"image\" in rel.target_ref.lower():\n                    try:\n                        image_bytes = rel.target_part.blob\n                        image_stream = io.BytesIO(image_bytes)\n                        ocr_result = ocr_service.extract_text(image_stream)\n\n                        if ocr_result.text.strip():\n                            # Store raw text only — markers added later\n                            ocr_map[rel.rId] = ocr_result.text.strip()\n\n                    except Exception:\n                        continue\n\n        except Exception:\n            pass\n\n        return ocr_map\n\n    def _inject_placeholders(\n        self, html: str, ocr_map: dict[str, str]\n    ) -> tuple[str, list[str]]:\n        \"\"\"\n        Replace <img> tags with numbered placeholder tokens.\n\n        Returns:\n            (html_with_placeholders, ordered list of raw OCR texts)\n        \"\"\"\n        if not ocr_map:\n            return html, []\n\n        ocr_texts = list(ocr_map.values())\n        used: list[int] = []\n\n        def replace_img(match: re.Match) -> str:  # type: ignore[type-arg]\n            for i in range(len(ocr_texts)):\n                if i not in used:\n                    used.append(i)\n                    return f\"<p>{_PLACEHOLDER.format(i)}</p>\"\n            return \"\"  # remove image if all OCR texts already used\n\n        result = re.sub(r\"<img[^>]*>\", replace_img, html)\n\n        # Any OCR texts that had no matching <img> tag go at the end\n        for i in range(len(ocr_texts)):\n            if i not in used:\n                result += f\"<p>{_PLACEHOLDER.format(i)}</p>\"\n\n        return result, ocr_texts\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py",
    "content": "\"\"\"\nOCR Service Layer for MarkItDown\nProvides LLM Vision-based image text extraction.\n\"\"\"\n\nimport base64\nfrom typing import Any, BinaryIO\nfrom dataclasses import dataclass\n\nfrom markitdown import StreamInfo\n\n\n@dataclass\nclass OCRResult:\n    \"\"\"Result from OCR extraction.\"\"\"\n\n    text: str\n    confidence: float | None = None\n    backend_used: str | None = None\n    error: str | None = None\n\n\nclass LLMVisionOCRService:\n    \"\"\"OCR service using LLM vision models (OpenAI-compatible).\"\"\"\n\n    def __init__(\n        self,\n        client: Any,\n        model: str,\n        default_prompt: str | None = None,\n    ) -> None:\n        \"\"\"\n        Initialize LLM Vision OCR service.\n\n        Args:\n            client: OpenAI-compatible client\n            model: Model name (e.g., 'gpt-4o', 'gemini-2.0-flash')\n            default_prompt: Default prompt for OCR extraction\n        \"\"\"\n        self.client = client\n        self.model = model\n        self.default_prompt = default_prompt or (\n            \"Extract all text from this image. \"\n            \"Return ONLY the extracted text, maintaining the original \"\n            \"layout and order. Do not add any commentary or description.\"\n        )\n\n    def extract_text(\n        self,\n        image_stream: BinaryIO,\n        prompt: str | None = None,\n        stream_info: StreamInfo | None = None,\n        **kwargs: Any,\n    ) -> OCRResult:\n        \"\"\"Extract text using LLM vision.\"\"\"\n        if self.client is None:\n            return OCRResult(\n                text=\"\",\n                backend_used=\"llm_vision\",\n                error=\"LLM client not configured\",\n            )\n\n        try:\n            image_stream.seek(0)\n\n            content_type: str | None = None\n            if stream_info:\n                content_type = stream_info.mimetype\n\n            if not content_type:\n                try:\n                    from PIL import Image\n\n                    image_stream.seek(0)\n                    img = Image.open(image_stream)\n                    fmt = img.format.lower() if img.format else \"png\"\n                    content_type = f\"image/{fmt}\"\n                except Exception:\n                    content_type = \"image/png\"\n\n            image_stream.seek(0)\n            base64_image = base64.b64encode(image_stream.read()).decode(\"utf-8\")\n            data_uri = f\"data:{content_type};base64,{base64_image}\"\n\n            actual_prompt = prompt or self.default_prompt\n            response = self.client.chat.completions.create(\n                model=self.model,\n                messages=[\n                    {\n                        \"role\": \"user\",\n                        \"content\": [\n                            {\"type\": \"text\", \"text\": actual_prompt},\n                            {\n                                \"type\": \"image_url\",\n                                \"image_url\": {\"url\": data_uri},\n                            },\n                        ],\n                    }\n                ],\n            )\n\n            text = response.choices[0].message.content\n            return OCRResult(\n                text=text.strip() if text else \"\",\n                backend_used=\"llm_vision\",\n            )\n        except Exception as e:\n            return OCRResult(text=\"\", backend_used=\"llm_vision\", error=str(e))\n        finally:\n            image_stream.seek(0)\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py",
    "content": "\"\"\"\nEnhanced PDF Converter with OCR support for embedded images.\nExtracts images from PDFs and performs OCR while maintaining document context.\n\"\"\"\n\nimport io\nimport sys\nfrom typing import Any, BinaryIO, Optional\n\nfrom markitdown import DocumentConverter, DocumentConverterResult, StreamInfo\nfrom markitdown._exceptions import (\n    MissingDependencyException,\n    MISSING_DEPENDENCY_MESSAGE,\n)\nfrom ._ocr_service import LLMVisionOCRService\n\n# Import dependencies\n_dependency_exc_info = None\ntry:\n    import pdfminer\n    import pdfminer.high_level\n    import pdfplumber\n    from PIL import Image\nexcept ImportError:\n    _dependency_exc_info = sys.exc_info()\n\n\ndef _extract_images_from_page(page: Any) -> list[dict]:\n    \"\"\"\n    Extract images from a PDF page by rendering page regions.\n\n    Returns:\n        List of dicts with 'stream', 'bbox', 'name', 'y_pos' keys\n    \"\"\"\n    images_info = []\n\n    try:\n        # Try multiple methods to detect images\n        images = []\n\n        # Method 1: Use page.images (standard approach)\n        if hasattr(page, \"images\") and page.images:\n            images = page.images\n\n        # Method 2: If no images found, try underlying PDF objects\n        if not images and hasattr(page, \"objects\") and \"image\" in page.objects:\n            images = page.objects.get(\"image\", [])\n\n        # Method 3: Try filtering all objects for image types\n        if not images and hasattr(page, \"objects\"):\n            all_objs = page.objects\n            for obj_type in all_objs.keys():\n                if \"image\" in obj_type.lower() or \"xobject\" in obj_type.lower():\n                    potential_imgs = all_objs.get(obj_type, [])\n                    if potential_imgs:\n                        images = potential_imgs\n                        break\n\n        for i, img_dict in enumerate(images):\n            try:\n                # Try to get the actual image stream from the PDF\n                img_stream = None\n                y_pos = 0\n\n                # Method A: If img_dict has 'stream' key, use it directly\n                if \"stream\" in img_dict and hasattr(img_dict[\"stream\"], \"get_data\"):\n                    try:\n                        img_bytes = img_dict[\"stream\"].get_data()\n\n                        # Try to open as PIL Image to validate/decode\n                        pil_img = Image.open(io.BytesIO(img_bytes))\n\n                        # Convert to RGB if needed (handle CMYK, etc.)\n                        if pil_img.mode not in (\"RGB\", \"L\"):\n                            pil_img = pil_img.convert(\"RGB\")\n\n                        # Save to stream as PNG\n                        img_stream = io.BytesIO()\n                        pil_img.save(img_stream, format=\"PNG\")\n                        img_stream.seek(0)\n\n                        y_pos = img_dict.get(\"top\", 0)\n                    except Exception:\n                        pass\n\n                # Method B: Fallback to rendering page region\n                if img_stream is None:\n                    x0 = img_dict.get(\"x0\", 0)\n                    y0 = img_dict.get(\"top\", 0)\n                    x1 = img_dict.get(\"x1\", 0)\n                    y1 = img_dict.get(\"bottom\", 0)\n                    y_pos = y0\n\n                    # Check if dimensions are valid\n                    if x1 <= x0 or y1 <= y0:\n                        continue\n\n                    # Use pdfplumber's within_bbox to crop, then render\n                    # This preserves coordinate system correctly\n                    bbox = (x0, y0, x1, y1)\n                    cropped_page = page.within_bbox(bbox)\n\n                    # Render at 150 DPI (balance between quality and size)\n                    page_img = cropped_page.to_image(resolution=150)\n\n                    # Save to stream\n                    img_stream = io.BytesIO()\n                    page_img.original.save(img_stream, format=\"PNG\")\n                    img_stream.seek(0)\n\n                if img_stream:\n                    images_info.append(\n                        {\n                            \"stream\": img_stream,\n                            \"name\": f\"page_{page.page_number}_img_{i}\",\n                            \"y_pos\": y_pos,\n                        }\n                    )\n\n            except Exception:\n                continue\n\n    except Exception:\n        pass\n\n    return images_info\n\n\nclass PdfConverterWithOCR(DocumentConverter):\n    \"\"\"\n    Enhanced PDF Converter with OCR support for embedded images.\n    Maintains document structure while extracting text from images inline.\n    \"\"\"\n\n    def __init__(self, ocr_service: Optional[LLMVisionOCRService] = None):\n        super().__init__()\n        self.ocr_service = ocr_service\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension == \".pdf\":\n            return True\n\n        if mimetype.startswith(\"application/pdf\") or mimetype.startswith(\n            \"application/x-pdf\"\n        ):\n            return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".pdf\",\n                    feature=\"pdf\",\n                )\n            ) from _dependency_exc_info[1].with_traceback(\n                _dependency_exc_info[2]\n            )  # type: ignore[union-attr]\n\n        # Get OCR service if available (from kwargs or instance)\n        ocr_service: LLMVisionOCRService | None = (\n            kwargs.get(\"ocr_service\") or self.ocr_service\n        )\n\n        # Read PDF into BytesIO\n        file_stream.seek(0)\n        pdf_bytes = io.BytesIO(file_stream.read())\n\n        markdown_content = []\n\n        try:\n            with pdfplumber.open(pdf_bytes) as pdf:\n                for page_num, page in enumerate(pdf.pages, 1):\n                    markdown_content.append(f\"\\n## Page {page_num}\\n\")\n\n                    # If OCR is enabled, interleave text and images by position\n                    if ocr_service:\n                        images_on_page = self._extract_page_images(pdf_bytes, page_num)\n\n                        if images_on_page:\n                            # Extract text lines with Y positions\n                            chars = page.chars\n                            if chars:\n                                # Group chars into lines based on Y position\n                                lines_with_y = []\n                                current_line = []\n                                current_y = None\n\n                                for char in sorted(\n                                    chars, key=lambda c: (c[\"top\"], c[\"x0\"])\n                                ):\n                                    y = char[\"top\"]\n                                    if current_y is None:\n                                        current_y = y\n                                    elif abs(y - current_y) > 2:  # New line threshold\n                                        if current_line:\n                                            text = \"\".join(\n                                                [c[\"text\"] for c in current_line]\n                                            )\n                                            lines_with_y.append(\n                                                {\"y\": current_y, \"text\": text.strip()}\n                                            )\n                                        current_line = []\n                                        current_y = y\n                                    current_line.append(char)\n\n                                # Add last line\n                                if current_line:\n                                    text = \"\".join([c[\"text\"] for c in current_line])\n                                    lines_with_y.append(\n                                        {\"y\": current_y, \"text\": text.strip()}\n                                    )\n                            else:\n                                # Fallback: use simple text extraction\n                                text_content = page.extract_text() or \"\"\n                                lines_with_y = [\n                                    {\"y\": i * 10, \"text\": line}\n                                    for i, line in enumerate(text_content.split(\"\\n\"))\n                                ]\n\n                            # OCR all images\n                            image_data = []\n                            for img_info in images_on_page:\n                                ocr_result = ocr_service.extract_text(\n                                    img_info[\"stream\"]\n                                )\n                                if ocr_result.text.strip():\n                                    image_data.append(\n                                        {\n                                            \"y_pos\": img_info[\"y_pos\"],\n                                            \"name\": img_info[\"name\"],\n                                            \"ocr_text\": ocr_result.text,\n                                            \"backend\": ocr_result.backend_used,\n                                            \"type\": \"image\",\n                                        }\n                                    )\n\n                            # Add text items\n                            content_items = [\n                                {\n                                    \"y_pos\": item[\"y\"],\n                                    \"text\": item[\"text\"],\n                                    \"type\": \"text\",\n                                }\n                                for item in lines_with_y\n                                if item[\"text\"]\n                            ]\n                            content_items.extend(image_data)\n\n                            # Sort all items by Y position (top to bottom)\n                            content_items.sort(key=lambda x: x[\"y_pos\"])\n\n                            # Build markdown by interleaving text and images\n                            for item in content_items:\n                                if item[\"type\"] == \"text\":\n                                    markdown_content.append(item[\"text\"])\n                                else:  # image\n                                    ocr_text = item[\"ocr_text\"]\n                                    img_marker = (\n                                        f\"\\n\\n*[Image OCR]\\n{ocr_text}\\n[End OCR]*\\n\"\n                                    )\n                                    markdown_content.append(img_marker)\n                        else:\n                            # No images detected - just extract regular text\n                            text_content = page.extract_text() or \"\"\n                            if text_content.strip():\n                                markdown_content.append(text_content.strip())\n                    else:\n                        # No OCR, just extract text\n                        text_content = page.extract_text() or \"\"\n                        if text_content.strip():\n                            markdown_content.append(text_content.strip())\n\n                # Build final markdown\n                markdown = \"\\n\\n\".join(markdown_content).strip()\n\n                # Fallback to pdfminer if empty\n                if not markdown:\n                    pdf_bytes.seek(0)\n                    markdown = pdfminer.high_level.extract_text(pdf_bytes)\n\n        except Exception:\n            # Fallback to pdfminer\n            try:\n                pdf_bytes.seek(0)\n                markdown = pdfminer.high_level.extract_text(pdf_bytes)\n            except Exception:\n                markdown = \"\"\n\n        # Final fallback: If still empty/whitespace and OCR is available,\n        # treat as scanned PDF and OCR full pages\n        if ocr_service and (not markdown or not markdown.strip()):\n            pdf_bytes.seek(0)\n            markdown = self._ocr_full_pages(pdf_bytes, ocr_service)\n\n        return DocumentConverterResult(markdown=markdown)\n\n    def _extract_page_images(self, pdf_bytes: io.BytesIO, page_num: int) -> list[dict]:\n        \"\"\"\n        Extract images from a PDF page using pdfplumber.\n\n        Args:\n            pdf_bytes: PDF file as BytesIO\n            page_num: Page number (1-indexed)\n\n        Returns:\n            List of image info dicts with 'stream', 'bbox', 'name', 'y_pos'\n        \"\"\"\n        images = []\n\n        try:\n            pdf_bytes.seek(0)\n            with pdfplumber.open(pdf_bytes) as pdf:\n                if page_num <= len(pdf.pages):\n                    page = pdf.pages[page_num - 1]  # 0-indexed\n                    images = _extract_images_from_page(page)\n        except Exception:\n            pass\n\n        # Sort by vertical position (top to bottom)\n        images.sort(key=lambda x: x[\"y_pos\"])\n\n        return images\n\n    def _ocr_full_pages(\n        self, pdf_bytes: io.BytesIO, ocr_service: LLMVisionOCRService\n    ) -> str:\n        \"\"\"\n        Fallback for scanned PDFs: Convert entire pages to images and OCR them.\n        Used when text extraction returns empty/whitespace results.\n\n        Args:\n            pdf_bytes: PDF file as BytesIO\n            ocr_service: OCR service to use\n\n        Returns:\n            Markdown text extracted from OCR of full pages\n        \"\"\"\n        markdown_parts = []\n\n        try:\n            pdf_bytes.seek(0)\n            with pdfplumber.open(pdf_bytes) as pdf:\n                for page_num, page in enumerate(pdf.pages, 1):\n                    try:\n                        markdown_parts.append(f\"\\n## Page {page_num}\\n\")\n\n                        # Render page to image\n                        page_img = page.to_image(resolution=300)\n                        img_stream = io.BytesIO()\n                        page_img.original.save(img_stream, format=\"PNG\")\n                        img_stream.seek(0)\n\n                        # Run OCR\n                        ocr_result = ocr_service.extract_text(img_stream)\n\n                        if ocr_result.text.strip():\n                            text = ocr_result.text.strip()\n                            markdown_parts.append(f\"*[Image OCR]\\n{text}\\n[End OCR]*\")\n                        else:\n                            markdown_parts.append(\n                                \"*[No text could be extracted from this page]*\"\n                            )\n\n                    except Exception as e:\n                        markdown_parts.append(\n                            f\"*[Error processing page {page_num}: {str(e)}]*\"\n                        )\n                        continue\n\n        except Exception:\n            # pdfplumber failed (e.g. malformed EOF) — try PyMuPDF for rendering\n            markdown_parts = []\n            try:\n                import fitz  # PyMuPDF\n\n                pdf_bytes.seek(0)\n                doc = fitz.open(stream=pdf_bytes.read(), filetype=\"pdf\")\n                for page_num in range(1, doc.page_count + 1):\n                    try:\n                        markdown_parts.append(f\"\\n## Page {page_num}\\n\")\n                        page = doc[page_num - 1]\n                        mat = fitz.Matrix(300 / 72, 300 / 72)  # 300 DPI\n                        pix = page.get_pixmap(matrix=mat)\n                        img_stream = io.BytesIO(pix.tobytes(\"png\"))\n                        img_stream.seek(0)\n\n                        ocr_result = ocr_service.extract_text(img_stream)\n\n                        if ocr_result.text.strip():\n                            text = ocr_result.text.strip()\n                            markdown_parts.append(f\"*[Image OCR]\\n{text}\\n[End OCR]*\")\n                        else:\n                            markdown_parts.append(\n                                \"*[No text could be extracted from this page]*\"\n                            )\n\n                    except Exception as e:\n                        markdown_parts.append(\n                            f\"*[Error processing page {page_num}: {str(e)}]*\"\n                        )\n                        continue\n                doc.close()\n            except Exception:\n                return \"*[Error: Could not process scanned PDF]*\"\n\n        return \"\\n\\n\".join(markdown_parts).strip()\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_plugin.py",
    "content": "\"\"\"\nPlugin registration for markitdown-ocr.\nRegisters OCR-enhanced converters with priority-based replacement strategy.\n\"\"\"\n\nfrom typing import Any\nfrom markitdown import MarkItDown\n\nfrom ._ocr_service import LLMVisionOCRService\nfrom ._pdf_converter_with_ocr import PdfConverterWithOCR\nfrom ._docx_converter_with_ocr import DocxConverterWithOCR\nfrom ._pptx_converter_with_ocr import PptxConverterWithOCR\nfrom ._xlsx_converter_with_ocr import XlsxConverterWithOCR\n\n\n__plugin_interface_version__ = 1\n\n\ndef register_converters(markitdown: MarkItDown, **kwargs: Any) -> None:\n    \"\"\"\n    Register OCR-enhanced converters with MarkItDown.\n\n    This plugin provides OCR support for PDF, DOCX, PPTX, and XLSX files.\n    The converters are registered with priority -1.0 to run BEFORE built-in\n    converters (which have priority 0.0), effectively replacing them when\n    the plugin is enabled.\n\n    Args:\n        markitdown: MarkItDown instance to register converters with\n        **kwargs: Additional keyword arguments that may include:\n            - llm_client: OpenAI-compatible client for LLM-based OCR (required for OCR to work)\n            - llm_model: Model name (e.g., 'gpt-4o')\n            - llm_prompt: Custom prompt for text extraction\n    \"\"\"\n    # Create OCR service — reads the same llm_client/llm_model kwargs\n    # that MarkItDown itself already accepts for image descriptions\n    llm_client = kwargs.get(\"llm_client\")\n    llm_model = kwargs.get(\"llm_model\")\n    llm_prompt = kwargs.get(\"llm_prompt\")\n\n    ocr_service: LLMVisionOCRService | None = None\n    if llm_client and llm_model:\n        ocr_service = LLMVisionOCRService(\n            client=llm_client,\n            model=llm_model,\n            default_prompt=llm_prompt,\n        )\n\n    # Register converters with priority -1.0 (before built-ins at 0.0)\n    # This effectively \"replaces\" the built-in converters when plugin is installed\n    # Pass the OCR service to each converter's constructor\n    PRIORITY_OCR_ENHANCED = -1.0\n\n    markitdown.register_converter(\n        PdfConverterWithOCR(ocr_service=ocr_service), priority=PRIORITY_OCR_ENHANCED\n    )\n\n    markitdown.register_converter(\n        DocxConverterWithOCR(ocr_service=ocr_service), priority=PRIORITY_OCR_ENHANCED\n    )\n\n    markitdown.register_converter(\n        PptxConverterWithOCR(ocr_service=ocr_service), priority=PRIORITY_OCR_ENHANCED\n    )\n\n    markitdown.register_converter(\n        XlsxConverterWithOCR(ocr_service=ocr_service), priority=PRIORITY_OCR_ENHANCED\n    )\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py",
    "content": "\"\"\"\nEnhanced PPTX Converter with improved OCR support.\nAlready has LLM-based image description, this enhances it with traditional OCR fallback.\n\"\"\"\n\nimport io\nimport sys\nfrom typing import Any, BinaryIO, Optional\n\nfrom typing import BinaryIO, Any, Optional\n\nfrom markitdown.converters import HtmlConverter\nfrom markitdown import DocumentConverter, DocumentConverterResult, StreamInfo\nfrom markitdown._exceptions import (\n    MissingDependencyException,\n    MISSING_DEPENDENCY_MESSAGE,\n)\nfrom ._ocr_service import LLMVisionOCRService\n\n_dependency_exc_info = None\ntry:\n    import pptx\nexcept ImportError:\n    _dependency_exc_info = sys.exc_info()\n\n\nclass PptxConverterWithOCR(DocumentConverter):\n    \"\"\"Enhanced PPTX Converter with OCR fallback.\"\"\"\n\n    def __init__(self, ocr_service: Optional[LLMVisionOCRService] = None):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n        self.ocr_service = ocr_service\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension == \".pptx\":\n            return True\n\n        if mimetype.startswith(\n            \"application/vnd.openxmlformats-officedocument.presentationml\"\n        ):\n            return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if _dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".pptx\",\n                    feature=\"pptx\",\n                )\n            ) from _dependency_exc_info[1].with_traceback(\n                _dependency_exc_info[2]\n            )  # type: ignore[union-attr]\n\n        # Get OCR service (from kwargs or instance)\n        ocr_service: Optional[LLMVisionOCRService] = (\n            kwargs.get(\"ocr_service\") or self.ocr_service\n        )\n        llm_client = kwargs.get(\"llm_client\")\n\n        presentation = pptx.Presentation(file_stream)\n        md_content = \"\"\n        slide_num = 0\n\n        for slide in presentation.slides:\n            slide_num += 1\n            md_content += f\"\\\\n\\\\n<!-- Slide number: {slide_num} -->\\\\n\"\n\n            title = slide.shapes.title\n\n            def get_shape_content(shape, **kwargs):\n                nonlocal md_content\n\n                # Pictures\n                if self._is_picture(shape):\n                    # Get image data\n                    image_stream = io.BytesIO(shape.image.blob)\n\n                    # Try LLM description first if available\n                    llm_description = \"\"\n                    if llm_client and kwargs.get(\"llm_model\"):\n                        try:\n                            from ._llm_caption import llm_caption\n\n                            image_filename = shape.image.filename\n                            image_extension = None\n                            if image_filename:\n                                import os\n\n                                image_extension = os.path.splitext(image_filename)[1]\n\n                            image_stream_info = StreamInfo(\n                                mimetype=shape.image.content_type,\n                                extension=image_extension,\n                                filename=image_filename,\n                            )\n\n                            llm_description = llm_caption(\n                                image_stream,\n                                image_stream_info,\n                                client=llm_client,\n                                model=kwargs.get(\"llm_model\"),\n                                prompt=kwargs.get(\"llm_prompt\"),\n                            )\n                        except Exception:\n                            pass\n\n                    # Try OCR if LLM failed or not available\n                    ocr_text = \"\"\n                    if not llm_description and ocr_service:\n                        try:\n                            image_stream.seek(0)\n                            ocr_result = ocr_service.extract_text(image_stream)\n                            if ocr_result.text.strip():\n                                ocr_text = ocr_result.text.strip()\n                        except Exception:\n                            pass\n\n                    # Format extracted content using unified OCR block format\n                    content = (llm_description or ocr_text or \"\").strip()\n                    if content:\n                        md_content += f\"\\n*[Image OCR]\\n{content}\\n[End OCR]*\\n\"\n\n                # Tables\n                if self._is_table(shape):\n                    md_content += self._convert_table_to_markdown(shape.table, **kwargs)\n\n                # Charts\n                if shape.has_chart:\n                    md_content += self._convert_chart_to_markdown(shape.chart)\n\n                # Text areas\n                elif shape.has_text_frame:\n                    if shape == title:\n                        md_content += \"# \" + shape.text.lstrip() + \"\\\\n\"\n                    else:\n                        md_content += shape.text + \"\\\\n\"\n\n                # Group Shapes\n                if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.GROUP:\n                    sorted_shapes = sorted(\n                        shape.shapes,\n                        key=lambda x: (\n                            float(\"-inf\") if not x.top else x.top,\n                            float(\"-inf\") if not x.left else x.left,\n                        ),\n                    )\n                    for subshape in sorted_shapes:\n                        get_shape_content(subshape, **kwargs)\n\n            sorted_shapes = sorted(\n                slide.shapes,\n                key=lambda x: (\n                    float(\"-inf\") if not x.top else x.top,\n                    float(\"-inf\") if not x.left else x.left,\n                ),\n            )\n            for shape in sorted_shapes:\n                get_shape_content(shape, **kwargs)\n\n            md_content = md_content.strip()\n\n            if slide.has_notes_slide:\n                md_content += \"\\\\n\\\\n### Notes:\\\\n\"\n                notes_frame = slide.notes_slide.notes_text_frame\n                if notes_frame is not None:\n                    md_content += notes_frame.text\n                md_content = md_content.strip()\n\n        return DocumentConverterResult(markdown=md_content.strip())\n\n    def _is_picture(self, shape):\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PICTURE:\n            return True\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PLACEHOLDER:\n            if hasattr(shape, \"image\"):\n                return True\n        return False\n\n    def _is_table(self, shape):\n        if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.TABLE:\n            return True\n        return False\n\n    def _convert_table_to_markdown(self, table, **kwargs):\n        import html\n\n        html_table = \"<html><body><table>\"\n        first_row = True\n        for row in table.rows:\n            html_table += \"<tr>\"\n            for cell in row.cells:\n                if first_row:\n                    html_table += \"<th>\" + html.escape(cell.text) + \"</th>\"\n                else:\n                    html_table += \"<td>\" + html.escape(cell.text) + \"</td>\"\n            html_table += \"</tr>\"\n            first_row = False\n        html_table += \"</table></body></html>\"\n\n        return (\n            self._html_converter.convert_string(html_table, **kwargs).markdown.strip()\n            + \"\\\\n\"\n        )\n\n    def _convert_chart_to_markdown(self, chart):\n        try:\n            md = \"\\\\n\\\\n### Chart\"\n            if chart.has_title:\n                md += f\": {chart.chart_title.text_frame.text}\"\n            md += \"\\\\n\\\\n\"\n            data = []\n            category_names = [c.label for c in chart.plots[0].categories]\n            series_names = [s.name for s in chart.series]\n            data.append([\"Category\"] + series_names)\n\n            for idx, category in enumerate(category_names):\n                row = [category]\n                for series in chart.series:\n                    row.append(series.values[idx])\n                data.append(row)\n\n            markdown_table = []\n            for row in data:\n                markdown_table.append(\"| \" + \" | \".join(map(str, row)) + \" |\")\n            header = markdown_table[0]\n            separator = \"|\" + \"|\".join([\"---\"] * len(data[0])) + \"|\"\n            return md + \"\\\\n\".join([header, separator] + markdown_table[1:])\n        except ValueError as e:\n            if \"unsupported plot type\" in str(e):\n                return \"\\\\n\\\\n[unsupported chart]\\\\n\\\\n\"\n        except Exception:\n            return \"\\\\n\\\\n[unsupported chart]\\\\n\\\\n\"\n"
  },
  {
    "path": "packages/markitdown-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py",
    "content": "\"\"\"\nEnhanced XLSX Converter with OCR support for embedded images.\nExtracts images from Excel spreadsheets and performs OCR while maintaining cell context.\n\"\"\"\n\nimport io\nimport sys\nfrom typing import Any, BinaryIO, Optional\n\nfrom markitdown.converters import HtmlConverter\nfrom markitdown import DocumentConverter, DocumentConverterResult, StreamInfo\nfrom markitdown._exceptions import (\n    MissingDependencyException,\n    MISSING_DEPENDENCY_MESSAGE,\n)\nfrom ._ocr_service import LLMVisionOCRService\n\n# Try loading dependencies\n_xlsx_dependency_exc_info = None\ntry:\n    import pandas as pd\n    from openpyxl import load_workbook\nexcept ImportError:\n    _xlsx_dependency_exc_info = sys.exc_info()\n\n\nclass XlsxConverterWithOCR(DocumentConverter):\n    \"\"\"\n    Enhanced XLSX Converter with OCR support for embedded images.\n    Extracts images with their cell positions and performs OCR.\n    \"\"\"\n\n    def __init__(self, ocr_service: Optional[LLMVisionOCRService] = None):\n        super().__init__()\n        self._html_converter = HtmlConverter()\n        self.ocr_service = ocr_service\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension == \".xlsx\":\n            return True\n\n        if mimetype.startswith(\n            \"application/vnd.openxmlformats-officedocument.spreadsheetml\"\n        ):\n            return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        if _xlsx_dependency_exc_info is not None:\n            raise MissingDependencyException(\n                MISSING_DEPENDENCY_MESSAGE.format(\n                    converter=type(self).__name__,\n                    extension=\".xlsx\",\n                    feature=\"xlsx\",\n                )\n            ) from _xlsx_dependency_exc_info[1].with_traceback(\n                _xlsx_dependency_exc_info[2]\n            )  # type: ignore[union-attr]\n\n        # Get OCR service if available (from kwargs or instance)\n        ocr_service: Optional[LLMVisionOCRService] = (\n            kwargs.get(\"ocr_service\") or self.ocr_service\n        )\n\n        if ocr_service:\n            # Remove ocr_service from kwargs to avoid duplicate argument error\n            kwargs_without_ocr = {k: v for k, v in kwargs.items() if k != \"ocr_service\"}\n            return self._convert_with_ocr(\n                file_stream, ocr_service, **kwargs_without_ocr\n            )\n        else:\n            return self._convert_standard(file_stream, **kwargs)\n\n    def _convert_standard(\n        self, file_stream: BinaryIO, **kwargs: Any\n    ) -> DocumentConverterResult:\n        \"\"\"Standard conversion without OCR.\"\"\"\n        file_stream.seek(0)\n        sheets = pd.read_excel(file_stream, sheet_name=None, engine=\"openpyxl\")\n        md_content = \"\"\n\n        for sheet_name in sheets:\n            md_content += f\"## {sheet_name}\\n\"\n            html_content = sheets[sheet_name].to_html(index=False)\n            md_content += (\n                self._html_converter.convert_string(\n                    html_content, **kwargs\n                ).markdown.strip()\n                + \"\\n\\n\"\n            )\n\n        return DocumentConverterResult(markdown=md_content.strip())\n\n    def _convert_with_ocr(\n        self, file_stream: BinaryIO, ocr_service: LLMVisionOCRService, **kwargs: Any\n    ) -> DocumentConverterResult:\n        \"\"\"Convert XLSX with image OCR.\"\"\"\n        file_stream.seek(0)\n        wb = load_workbook(file_stream)\n\n        md_content = \"\"\n\n        for sheet_name in wb.sheetnames:\n            sheet = wb[sheet_name]\n            md_content += f\"## {sheet_name}\\n\\n\"\n\n            # Convert sheet data to markdown table\n            file_stream.seek(0)\n            try:\n                df = pd.read_excel(\n                    file_stream, sheet_name=sheet_name, engine=\"openpyxl\"\n                )\n                html_content = df.to_html(index=False)\n                md_content += (\n                    self._html_converter.convert_string(\n                        html_content, **kwargs\n                    ).markdown.strip()\n                    + \"\\n\\n\"\n                )\n            except Exception:\n                # If pandas fails, just skip the table\n                pass\n\n            # Extract and OCR images in this sheet\n            images_with_ocr = self._extract_and_ocr_sheet_images(sheet, ocr_service)\n\n            if images_with_ocr:\n                md_content += \"### Images in this sheet:\\n\\n\"\n                for img_info in images_with_ocr:\n                    ocr_text = img_info[\"ocr_text\"]\n                    md_content += f\"*[Image OCR]\\n{ocr_text}\\n[End OCR]*\\n\\n\"\n\n        return DocumentConverterResult(markdown=md_content.strip())\n\n    def _extract_and_ocr_sheet_images(\n        self, sheet: Any, ocr_service: LLMVisionOCRService\n    ) -> list[dict]:\n        \"\"\"\n        Extract and OCR images from an Excel sheet.\n\n        Args:\n            sheet: openpyxl worksheet\n            ocr_service: OCR service\n\n        Returns:\n            List of dicts with 'cell_ref' and 'ocr_text'\n        \"\"\"\n        results = []\n\n        try:\n            # Check if sheet has images\n            if hasattr(sheet, \"_images\"):\n                for img in sheet._images:\n                    try:\n                        # Get image data\n                        if hasattr(img, \"_data\"):\n                            image_data = img._data()\n                        elif hasattr(img, \"image\"):\n                            # Some versions store it differently\n                            image_data = img.image\n                        else:\n                            continue\n\n                        # Create image stream\n                        image_stream = io.BytesIO(image_data)\n\n                        # Get cell reference\n                        cell_ref = \"unknown\"\n                        if hasattr(img, \"anchor\"):\n                            anchor = img.anchor\n                            if hasattr(anchor, \"_from\"):\n                                from_cell = anchor._from\n                                if hasattr(from_cell, \"col\") and hasattr(\n                                    from_cell, \"row\"\n                                ):\n                                    # Convert column number to letter\n                                    col_letter = self._column_number_to_letter(\n                                        from_cell.col\n                                    )\n                                    cell_ref = f\"{col_letter}{from_cell.row + 1}\"\n\n                        # Perform OCR\n                        ocr_result = ocr_service.extract_text(image_stream)\n\n                        if ocr_result.text.strip():\n                            results.append(\n                                {\n                                    \"cell_ref\": cell_ref,\n                                    \"ocr_text\": ocr_result.text.strip(),\n                                    \"backend\": ocr_result.backend_used,\n                                }\n                            )\n\n                    except Exception:\n                        continue\n\n        except Exception:\n            pass\n\n        return results\n\n    @staticmethod\n    def _column_number_to_letter(n: int) -> str:\n        \"\"\"Convert column number to Excel column letter (0-indexed).\"\"\"\n        result = \"\"\n        n = n + 1  # Make 1-indexed\n        while n > 0:\n            n -= 1\n            result = chr(65 + (n % 26)) + result\n            n //= 26\n        return result\n"
  },
  {
    "path": "packages/markitdown-ocr/tests/__init__.py",
    "content": ""
  },
  {
    "path": "packages/markitdown-ocr/tests/test_docx_converter.py",
    "content": "\"\"\"\nUnit tests for DocxConverterWithOCR.\n\nFor each DOCX test file: convert with a mock OCR service then compare the\nfull output string against the expected snapshot.\n\nOCR block format used by the converter:\n    *[Image OCR]\n    MOCK_OCR_TEXT_12345\n    [End OCR]*\n\"\"\"\n\nimport sys\nfrom pathlib import Path\nfrom typing import Any\n\nimport pytest\n\nsys.path.insert(0, str(Path(__file__).parent.parent / \"src\"))\n\nfrom markitdown_ocr._ocr_service import OCRResult  # noqa: E402\nfrom markitdown_ocr._docx_converter_with_ocr import (  # noqa: E402\n    DocxConverterWithOCR,\n)\nfrom markitdown import StreamInfo  # noqa: E402\n\nTEST_DATA_DIR = Path(__file__).parent / \"ocr_test_data\"\n\n_MOCK_TEXT = \"MOCK_OCR_TEXT_12345\"\n\n\nclass MockOCRService:\n    def extract_text(  # noqa: ANN101\n        self, image_stream: Any, **kwargs: Any\n    ) -> OCRResult:\n        return OCRResult(text=_MOCK_TEXT, backend_used=\"mock\")\n\n\n@pytest.fixture(scope=\"module\")\ndef svc() -> MockOCRService:\n    return MockOCRService()\n\n\ndef _convert(filename: str, ocr_service: MockOCRService) -> str:\n    path = TEST_DATA_DIR / filename\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = DocxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        return converter.convert(\n            f, StreamInfo(extension=\".docx\"), ocr_service=ocr_service\n        ).text_content\n\n\n# ---------------------------------------------------------------------------\n# docx_image_start.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_image_start(svc: MockOCRService) -> None:\n    expected = (\n        \"Document with Image at Start\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"This is the main content after the header image.\\n\\n\"\n        \"More text content here.\"\n    )\n    assert _convert(\"docx_image_start.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# docx_image_middle.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_image_middle(svc: MockOCRService) -> None:\n    expected = (\n        \"# Introduction\\n\\n\"\n        \"This is the introduction section.\\n\\n\"\n        \"We will see an image below.\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"# Analysis\\n\\n\"\n        \"This section comes after the image.\"\n    )\n    assert _convert(\"docx_image_middle.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# docx_image_end.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_image_end(svc: MockOCRService) -> None:\n    expected = (\n        \"Report\\n\\n\"\n        \"Main findings of the report.\\n\\n\"\n        \"Details and analysis.\\n\\n\"\n        \"Recommendations.\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"docx_image_end.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# docx_multiple_images.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_multiple_images(svc: MockOCRService) -> None:\n    expected = (\n        \"Multi-Image Document\\n\\n\"\n        \"First section\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"Second section with another image\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"Conclusion\"\n    )\n    assert _convert(\"docx_multiple_images.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# docx_multipage.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_multipage(svc: MockOCRService) -> None:\n    expected = (\n        \"# Page 1 - Mixed Content\\n\\n\"\n        \"This is the first paragraph on page 1.\\n\\n\"\n        \"BEFORE IMAGE: Important content appears here.\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"AFTER IMAGE: This content follows the image.\\n\\n\"\n        \"More text on page 1.\\n\\n\"\n        \"# Page 2 - Image at End\\n\\n\"\n        \"Content on page 2.\\n\\n\"\n        \"Multiple paragraphs of text.\\n\\n\"\n        \"Building up to the image...\\n\\n\"\n        \"Final paragraph before image.\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"# Page 3 - Image at Start\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"Content that follows the header image.\\n\\n\"\n        \"AFTER IMAGE: This text is after the image.\"\n    )\n    assert _convert(\"docx_multipage.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# docx_complex_layout.docx\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_complex_layout(svc: MockOCRService) -> None:\n    expected = (\n        \"Complex Document\\n\\n\"\n        \"|  |  |\\n\"\n        \"| --- | --- |\\n\"\n        \"| Feature | Status |\\n\"\n        \"| Authentication | Active |\\n\"\n        \"| Encryption | Enabled |\\n\\n\"\n        \"Security notice:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"docx_complex_layout.docx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# _inject_placeholders — internal unit tests (no file I/O)\n# ---------------------------------------------------------------------------\n\n\ndef test_inject_placeholders_single_image() -> None:\n    converter = DocxConverterWithOCR()\n    html = \"<p>Before</p><img src='x.png'/><p>After</p>\"\n    result_html, texts = converter._inject_placeholders(html, {\"rId1\": \"TEXT\"})\n    assert \"<img\" not in result_html\n    assert \"MARKITDOWNOCRBLOCK0\" in result_html\n    assert texts == [\"TEXT\"]\n\n\ndef test_inject_placeholders_two_images_sequential_tokens() -> None:\n    converter = DocxConverterWithOCR()\n    html = \"<img src='a.png'/><p>Mid</p><img src='b.png'/>\"\n    result_html, texts = converter._inject_placeholders(\n        html, {\"rId1\": \"FIRST\", \"rId2\": \"SECOND\"}\n    )\n    assert \"MARKITDOWNOCRBLOCK0\" in result_html\n    assert \"MARKITDOWNOCRBLOCK1\" in result_html\n    assert result_html.index(\"MARKITDOWNOCRBLOCK0\") < result_html.index(\n        \"MARKITDOWNOCRBLOCK1\"\n    )\n    assert len(texts) == 2\n\n\ndef test_inject_placeholders_no_img_tag_appends_at_end() -> None:\n    converter = DocxConverterWithOCR()\n    html = \"<p>No images</p>\"\n    result_html, texts = converter._inject_placeholders(html, {\"rId1\": \"ORPHAN\"})\n    assert \"MARKITDOWNOCRBLOCK0\" in result_html\n    assert texts == [\"ORPHAN\"]\n\n\ndef test_inject_placeholders_empty_map_leaves_html_unchanged() -> None:\n    converter = DocxConverterWithOCR()\n    html = \"<p>Content</p><img src='pic.jpg'/>\"\n    result_html, texts = converter._inject_placeholders(html, {})\n    assert result_html == html\n    assert texts == []\n\n\n# ---------------------------------------------------------------------------\n# No OCR service — no OCR tags emitted\n# ---------------------------------------------------------------------------\n\n\ndef test_docx_no_ocr_service_no_tags() -> None:\n    path = TEST_DATA_DIR / \"docx_image_middle.docx\"\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = DocxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        md = converter.convert(f, StreamInfo(extension=\".docx\")).text_content\n    assert \"*[Image OCR]\" not in md\n    assert \"[End OCR]*\" not in md\n"
  },
  {
    "path": "packages/markitdown-ocr/tests/test_pdf_converter.py",
    "content": "\"\"\"\nUnit tests for PdfConverterWithOCR.\n\nFor each PDF test file: convert with a mock OCR service then compare the\nfull output string against the expected snapshot.\n\nOCR block format used by the converter:\n    *[Image OCR]\n    MOCK_OCR_TEXT_12345\n    [End OCR]*\n\"\"\"\n\nimport io\nimport sys\nfrom pathlib import Path\nfrom typing import Any\nfrom unittest.mock import MagicMock, patch\n\nimport pytest\n\nsys.path.insert(0, str(Path(__file__).parent.parent / \"src\"))\n\nfrom markitdown_ocr._ocr_service import OCRResult  # noqa: E402\nfrom markitdown_ocr._pdf_converter_with_ocr import (  # noqa: E402\n    PdfConverterWithOCR,\n)\nfrom markitdown import StreamInfo  # noqa: E402\n\nTEST_DATA_DIR = Path(__file__).parent / \"ocr_test_data\"\n\n_MOCK_TEXT = \"MOCK_OCR_TEXT_12345\"\n_OCR_BLOCK = f\"*[Image OCR]\\n{_MOCK_TEXT}\\n[End OCR]*\"\n_PAGE_1_SCANNED = f\"## Page 1\\n\\n\\n\\n\\n{_OCR_BLOCK}\"\n\n\nclass MockOCRService:\n    def extract_text(\n        self,  # noqa: ANN101\n        image_stream: Any,\n        **kwargs: Any,\n    ) -> OCRResult:\n        return OCRResult(text=_MOCK_TEXT, backend_used=\"mock\")\n\n\n@pytest.fixture(scope=\"module\")\ndef svc() -> MockOCRService:\n    return MockOCRService()\n\n\ndef _convert(filename: str, ocr_service: MockOCRService) -> str:\n    path = TEST_DATA_DIR / filename\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = PdfConverterWithOCR()\n    with open(path, \"rb\") as f:\n        return converter.convert(\n            f, StreamInfo(extension=\".pdf\"), ocr_service=ocr_service\n        ).text_content\n\n\n# ---------------------------------------------------------------------------\n# pdf_image_start.pdf\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_image_start(svc: MockOCRService) -> None:\n    expected = (\n        \"## Page 1\\n\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\\n\"\n        \"This is text BEFORE the image.\\n\\n\"\n        \"The image should appear above this text.\\n\\n\"\n        \"This is more content after the image.\"\n    )\n    assert _convert(\"pdf_image_start.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_image_middle.pdf\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_image_middle(svc: MockOCRService) -> None:\n    expected = (\n        \"## Page 1\\n\\n\\n\"\n        \"Section 1: Introduction\\n\\n\"\n        \"This document contains an image in the middle.\\n\\n\"\n        \"Here is some introductory text.\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\\n\"\n        \"Section 2: Details\\n\\n\"\n        \"This text appears AFTER the image.\"\n    )\n    assert _convert(\"pdf_image_middle.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_image_end.pdf\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_image_end(svc: MockOCRService) -> None:\n    expected = (\n        \"## Page 1\\n\\n\\n\"\n        \"Main Content\\n\\n\"\n        \"This is the main text content.\\n\\n\"\n        \"The image will appear at the end.\\n\\n\"\n        \"Keep reading...\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"pdf_image_end.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_multiple_images.pdf\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_multiple_images(svc: MockOCRService) -> None:\n    expected = (\n        \"## Page 1\\n\\n\\n\"\n        \"Document with Multiple Images\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\\n\"\n        \"Text between first and second image.\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\\n\"\n        \"Final text after all images.\"\n    )\n    assert _convert(\"pdf_multiple_images.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_complex_layout.pdf\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_complex_layout(svc: MockOCRService) -> None:\n    expected = (\n        \"## Page 1\\n\\n\\n\"\n        \"Complex Layout Document\\n\\n\"\n        \"Table:\\n\\n\"\n        \"ItemQuantity\\n\\n\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\\n\"\n        \"Widget A5\"\n    )\n    assert _convert(\"pdf_complex_layout.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_multipage.pdf — pdfplumber/pdfminer fail (EOF); PyMuPDF fallback used\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_multipage(svc: MockOCRService) -> None:\n    # pdfplumber cannot open this file (Unexpected EOF), so _ocr_full_pages\n    # falls back to PyMuPDF for page rendering.  Each page becomes one OCR block.\n    expected = (\n        f\"## Page 1\\n\\n\\n{_OCR_BLOCK}\\n\\n\\n\"\n        f\"## Page 2\\n\\n\\n{_OCR_BLOCK}\\n\\n\\n\"\n        f\"## Page 3\\n\\n\\n{_OCR_BLOCK}\"\n    )\n    assert _convert(\"pdf_multipage.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pdf_scanned_*.pdf — raster-only pages → full-page OCR\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_scanned_invoice(svc: MockOCRService) -> None:\n    assert _convert(\"pdf_scanned_invoice.pdf\", svc) == _PAGE_1_SCANNED\n\n\ndef test_pdf_scanned_meeting_minutes(svc: MockOCRService) -> None:\n    assert _convert(\"pdf_scanned_meeting_minutes.pdf\", svc) == _PAGE_1_SCANNED\n\n\ndef test_pdf_scanned_minimal(svc: MockOCRService) -> None:\n    assert _convert(\"pdf_scanned_minimal.pdf\", svc) == _PAGE_1_SCANNED\n\n\ndef test_pdf_scanned_sales_report(svc: MockOCRService) -> None:\n    assert _convert(\"pdf_scanned_sales_report.pdf\", svc) == _PAGE_1_SCANNED\n\n\ndef test_pdf_scanned_report(svc: MockOCRService) -> None:\n    expected = (\n        f\"{_PAGE_1_SCANNED}\\n\\n\\n\\n\"\n        f\"## Page 2\\n\\n\\n\\n\\n{_OCR_BLOCK}\\n\\n\\n\\n\"\n        f\"## Page 3\\n\\n\\n\\n\\n{_OCR_BLOCK}\"\n    )\n    assert _convert(\"pdf_scanned_report.pdf\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# Scanned PDF fallback path (pdfplumber finds no text → full-page OCR)\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_scanned_fallback_format(svc: MockOCRService) -> None:\n    \"\"\"_ocr_full_pages emits *[Image OCR]...[End OCR]* for each page.\"\"\"\n    path = TEST_DATA_DIR / \"pdf_image_start.pdf\"\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n\n    converter = PdfConverterWithOCR()\n    with patch(\"pdfplumber.open\") as mock_plumber:\n        mock_pdf = MagicMock()\n        mock_page = MagicMock()\n        mock_page.page_number = 1\n        mock_pdf.pages = [mock_page]\n        mock_pdf.__enter__.return_value = mock_pdf\n        mock_plumber.return_value = mock_pdf\n\n        with open(path, \"rb\") as f:\n            md = converter._ocr_full_pages(io.BytesIO(f.read()), svc)\n\n    expected = \"## Page 1\\n\\n\\n\" \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    assert (\n        md == expected\n    ), f\"_ocr_full_pages must produce:\\n{expected!r}\\nActual:\\n{md!r}\"\n\n\n# ---------------------------------------------------------------------------\n# No OCR service — no OCR tags emitted\n# ---------------------------------------------------------------------------\n\n\ndef test_pdf_no_ocr_service_no_tags() -> None:\n    path = TEST_DATA_DIR / \"pdf_image_middle.pdf\"\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = PdfConverterWithOCR()\n    with open(path, \"rb\") as f:\n        md = converter.convert(f, StreamInfo(extension=\".pdf\")).text_content\n    assert \"*[Image OCR]\" not in md\n    assert \"[End OCR]*\" not in md\n"
  },
  {
    "path": "packages/markitdown-ocr/tests/test_pptx_converter.py",
    "content": "\"\"\"\nUnit tests for PptxConverterWithOCR.\n\nFor each PPTX test file: convert with a mock OCR service then compare the\nfull output string against the expected snapshot.\n\nOCR block format used by the converter:\n    *[Image OCR]\n    MOCK_OCR_TEXT_12345\n    [End OCR]*\n\nNote: PPTX slide text uses literal backslash-n (\\\\n) sequences from the\nunderlying PPTX converter template; OCR blocks use real newlines.\n\"\"\"\n\nimport sys\nfrom pathlib import Path\nfrom typing import Any\n\nimport pytest\n\nsys.path.insert(0, str(Path(__file__).parent.parent / \"src\"))\n\nfrom markitdown_ocr._ocr_service import OCRResult  # noqa: E402\nfrom markitdown_ocr._pptx_converter_with_ocr import (  # noqa: E402\n    PptxConverterWithOCR,\n)\nfrom markitdown import StreamInfo  # noqa: E402\n\nTEST_DATA_DIR = Path(__file__).parent / \"ocr_test_data\"\n\n_MOCK_TEXT = \"MOCK_OCR_TEXT_12345\"\n_OCR_BLOCK = f\"*[Image OCR]\\n{_MOCK_TEXT}\\n[End OCR]*\"\n\n\nclass MockOCRService:\n    def extract_text(\n        self,  # noqa: ANN101\n        image_stream: Any,\n        **kwargs: Any,\n    ) -> OCRResult:\n        return OCRResult(text=_MOCK_TEXT, backend_used=\"mock\")\n\n\n@pytest.fixture(scope=\"module\")\ndef svc() -> MockOCRService:\n    return MockOCRService()\n\n\ndef _convert(filename: str, ocr_service: MockOCRService) -> str:\n    path = TEST_DATA_DIR / filename\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = PptxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        return converter.convert(\n            f, StreamInfo(extension=\".pptx\"), ocr_service=ocr_service\n        ).text_content\n\n\n# ---------------------------------------------------------------------------\n# pptx_image_start.pptx\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_image_start(svc: MockOCRService) -> None:\n    # Slide 1: title \"Welcome\" followed by an image\n    expected = (\n        \"\\\\n\\\\n<!-- Slide number: 1 -->\\\\n# Welcome\\\\n\\\\n\"\n        \"\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"pptx_image_start.pptx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pptx_image_middle.pptx\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_image_middle(svc: MockOCRService) -> None:\n    # Slide 1: Introduction | Slide 2: Architecture + image | Slide 3: Conclusion  # noqa: E501\n    expected = (\n        \"\\\\n\\\\n<!-- Slide number: 1 -->\\\\n# Introduction\"\n        \"\\\\n\\\\n\\\\n\\\\n<!-- Slide number: 2 -->\\\\n# Architecture\\\\n\\\\n\"\n        \"\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n        \"\\\\n\\\\n<!-- Slide number: 3 -->\\\\n# Conclusion\\\\n\\\\n\"\n    )\n    assert _convert(\"pptx_image_middle.pptx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pptx_image_end.pptx\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_image_end(svc: MockOCRService) -> None:\n    # Slide 1: Presentation | Slide 2: Thank You + image\n    expected = (\n        \"\\\\n\\\\n<!-- Slide number: 1 -->\\\\n# Presentation\"\n        \"\\\\n\\\\n\\\\n\\\\n<!-- Slide number: 2 -->\\\\n# Thank You\\\\n\\\\n\"\n        \"\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"pptx_image_end.pptx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pptx_multiple_images.pptx\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_multiple_images(svc: MockOCRService) -> None:\n    # Slide 1: two images, no title text\n    expected = (\n        \"\\\\n\\\\n<!-- Slide number: 1 -->\\\\n# \\\\n\"\n        \"\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n        \"\\n\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"pptx_multiple_images.pptx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# pptx_complex_layout.pptx\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_complex_layout(svc: MockOCRService) -> None:\n    expected = (\n        \"\\\\n\\\\n<!-- Slide number: 1 -->\\\\n# Product Comparison\"\n        \"\\\\n\\\\nOur products lead the market\\\\n\"\n        \"\\n*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"pptx_complex_layout.pptx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# No OCR service — no OCR tags emitted\n# ---------------------------------------------------------------------------\n\n\ndef test_pptx_no_ocr_service_no_tags() -> None:\n    path = TEST_DATA_DIR / \"pptx_image_middle.pptx\"\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = PptxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        md = converter.convert(f, StreamInfo(extension=\".pptx\")).text_content\n    assert \"*[Image OCR]\" not in md\n    assert \"[End OCR]*\" not in md\n"
  },
  {
    "path": "packages/markitdown-ocr/tests/test_xlsx_converter.py",
    "content": "\"\"\"\nUnit tests for XlsxConverterWithOCR.\n\nFor each XLSX test file: convert with a mock OCR service then compare the\nfull output string against the expected snapshot.\n\nOCR block format used by the converter:\n    *[Image OCR]\n    MOCK_OCR_TEXT_12345\n    [End OCR]*\n\nImages are grouped at the end of each sheet under:\n    ### Images in this sheet:\n\"\"\"\n\nimport sys\nfrom pathlib import Path\nfrom typing import Any\n\nimport pytest\n\nsys.path.insert(0, str(Path(__file__).parent.parent / \"src\"))\n\nfrom markitdown_ocr._ocr_service import OCRResult  # noqa: E402\nfrom markitdown_ocr._xlsx_converter_with_ocr import (  # noqa: E402\n    XlsxConverterWithOCR,\n)\nfrom markitdown import StreamInfo  # noqa: E402\n\nTEST_DATA_DIR = Path(__file__).parent / \"ocr_test_data\"\n\n_MOCK_TEXT = \"MOCK_OCR_TEXT_12345\"\n_OCR_BLOCK = f\"*[Image OCR]\\n{_MOCK_TEXT}\\n[End OCR]*\"\n_IMG_SECTION = \"### Images in this sheet:\"\n\n\nclass MockOCRService:\n    def extract_text(\n        self,  # noqa: ANN101\n        image_stream: Any,\n        **kwargs: Any,\n    ) -> OCRResult:\n        return OCRResult(text=_MOCK_TEXT, backend_used=\"mock\")\n\n\n@pytest.fixture(scope=\"module\")\ndef svc() -> MockOCRService:\n    return MockOCRService()\n\n\ndef _convert(filename: str, ocr_service: MockOCRService) -> str:\n    path = TEST_DATA_DIR / filename\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = XlsxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        return converter.convert(\n            f, StreamInfo(extension=\".xlsx\"), ocr_service=ocr_service\n        ).text_content\n\n\n# ---------------------------------------------------------------------------\n# xlsx_image_start.xlsx\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_image_start(svc: MockOCRService) -> None:\n    expected = (\n        \"## Sales Q1\\n\\n\"\n        \"| Product | Sales |\\n\"\n        \"| --- | --- |\\n\"\n        \"| Widget A | 100 |\\n\"\n        \"| Widget B | 150 |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Forecast Q2\\n\\n\"\n        \"| Projected Sales | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| Widget A | 120 |\\n\"\n        \"| Widget B | 180 |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"xlsx_image_start.xlsx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# xlsx_image_middle.xlsx\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_image_middle(svc: MockOCRService) -> None:\n    expected = (\n        \"## Revenue\\n\\n\"\n        \"| Q1 Report | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Revenue | $50,000 |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Profit Margin | 40% |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Expenses\\n\\n\"\n        \"| Expense Breakdown | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Expenses | $30,000 |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Savings | $5,000 |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"xlsx_image_middle.xlsx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# xlsx_image_end.xlsx\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_image_end(svc: MockOCRService) -> None:\n    expected = (\n        \"## Sheet\\n\\n\"\n        \"| Financial Summary | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| Total Revenue | $500,000 |\\n\"\n        \"| Total Expenses | $300,000 |\\n\"\n        \"| Net Profit | $200,000 |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Signature: | NaN |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Budget\\n\\n\"\n        \"| Budget Allocation | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| Marketing | $100,000 |\\n\"\n        \"| R&D | $150,000 |\\n\"\n        \"| Operations | $50,000 |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Approved: | NaN |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"xlsx_image_end.xlsx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# xlsx_multiple_images.xlsx\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_multiple_images(svc: MockOCRService) -> None:\n    expected = (\n        \"## Overview\\n\\n\"\n        \"| Dashboard |\\n\"\n        \"| --- |\\n\"\n        \"| Status: Active |\\n\"\n        \"| NaN |\\n\"\n        \"| NaN |\\n\"\n        \"| NaN |\\n\"\n        \"| NaN |\\n\"\n        \"| Performance Summary |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Details\\n\\n\"\n        \"| Detailed Metrics |\\n\"\n        \"| --- |\\n\"\n        \"| System Health |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Summary\\n\\n\"\n        \"| Quarter Summary |\\n\"\n        \"| --- |\\n\"\n        \"| Overall Performance |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"xlsx_multiple_images.xlsx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# xlsx_complex_layout.xlsx\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_complex_layout(svc: MockOCRService) -> None:\n    expected = (\n        \"## Complex Report\\n\\n\"\n        \"| Annual Report 2024 | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Month | Sales |\\n\"\n        \"| Jan | 1000 |\\n\"\n        \"| Feb | 1200 |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Total | 2200 |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Customers\\n\\n\"\n        \"| Customer Metrics | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| New Customers | 250 |\\n\"\n        \"| Retention Rate | 92% |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\\n\\n\"\n        \"## Regions\\n\\n\"\n        \"| Regional Breakdown | Unnamed: 1 |\\n\"\n        \"| --- | --- |\\n\"\n        \"| NaN | NaN |\\n\"\n        \"| Region | Revenue |\\n\"\n        \"| North | $800K |\\n\"\n        \"| South | $600K |\\n\\n\"\n        \"### Images in this sheet:\\n\\n\"\n        \"*[Image OCR]\\nMOCK_OCR_TEXT_12345\\n[End OCR]*\"\n    )\n    assert _convert(\"xlsx_complex_layout.xlsx\", svc) == expected\n\n\n# ---------------------------------------------------------------------------\n# No OCR service — no OCR tags emitted\n# ---------------------------------------------------------------------------\n\n\ndef test_xlsx_no_ocr_service_no_tags() -> None:\n    path = TEST_DATA_DIR / \"xlsx_image_middle.xlsx\"\n    if not path.exists():\n        pytest.skip(f\"Test file not found: {path}\")\n    converter = XlsxConverterWithOCR()\n    with open(path, \"rb\") as f:\n        md = converter.convert(f, StreamInfo(extension=\".xlsx\")).text_content\n    assert \"*[Image OCR]\" not in md\n    assert \"[End OCR]*\" not in md\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/README.md",
    "content": "# MarkItDown Sample Plugin\n\n[![PyPI](https://img.shields.io/pypi/v/markitdown-sample-plugin.svg)](https://pypi.org/project/markitdown-sample-plugin/)\n![PyPI - Downloads](https://img.shields.io/pypi/dd/markitdown-sample-plugin)\n[![Built by AutoGen Team](https://img.shields.io/badge/Built%20by-AutoGen%20Team-blue)](https://github.com/microsoft/autogen)\n\n\nThis project shows how to create a sample plugin for MarkItDown. The most important parts are as follows:\n\nNext, implement your custom DocumentConverter:\n\n```python\nfrom typing import BinaryIO, Any\nfrom markitdown import MarkItDown, DocumentConverter, DocumentConverterResult, StreamInfo\n\nclass RtfConverter(DocumentConverter):\n\n    def __init__(\n        self, priority: float = DocumentConverter.PRIORITY_SPECIFIC_FILE_FORMAT\n    ):\n        super().__init__(priority=priority)\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n\t\n\t# Implement logic to check if the file stream is an RTF file\n\t# ...\n\traise NotImplementedError()\n\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n\n\t# Implement logic to convert the file stream to Markdown\n\t# ...\n\traise NotImplementedError()\n```\n\nNext, make sure your package implements and exports the following:\n\n```python\n# The version of the plugin interface that this plugin uses. \n# The only supported version is 1 for now.\n__plugin_interface_version__ = 1 \n\n# The main entrypoint for the plugin. This is called each time MarkItDown instances are created.\ndef register_converters(markitdown: MarkItDown, **kwargs):\n    \"\"\"\n    Called during construction of MarkItDown instances to register converters provided by plugins.\n    \"\"\"\n\n    # Simply create and attach an RtfConverter instance\n    markitdown.register_converter(RtfConverter())\n```\n\n\nFinally, create an entrypoint in the `pyproject.toml` file:\n\n```toml\n[project.entry-points.\"markitdown.plugin\"]\nsample_plugin = \"markitdown_sample_plugin\"\n```\n\nHere, the value of `sample_plugin` can be any key, but should ideally be the name of the plugin. The value is the fully qualified name of the package implementing the plugin.\n\n\n## Installation\n\nTo use the plugin with MarkItDown, it must be installed. To install the plugin from the current directory use:\n\n```bash\npip install -e .\n```\n\nOnce the plugin package is installed, verify that it is available to MarkItDown by running:\n\n```bash\nmarkitdown --list-plugins\n```\n\nTo use the plugin for a conversion use the `--use-plugins` flag. For example, to convert an RTF file:\n\n```bash\nmarkitdown --use-plugins path-to-file.rtf\n```\n\nIn Python, plugins can be enabled as follows:\n\n```python\nfrom markitdown import MarkItDown\n\nmd = MarkItDown(enable_plugins=True) \nresult = md.convert(\"path-to-file.rtf\")\nprint(result.text_content)\n```\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft\ntrademarks or logos is subject to and must follow\n[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.\nAny use of third-party trademarks or logos are subject to those third-party's policies.\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/pyproject.toml",
    "content": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"markitdown-sample-plugin\"\ndynamic = [\"version\"]\ndescription = 'A sample plugin for the \"markitdown\" library.'\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = \"MIT\"\nkeywords = []\nauthors = [\n  { name = \"Adam Fourney\", email = \"adamfo@microsoft.com\" },\n]\nclassifiers = [\n  \"Development Status :: 4 - Beta\",\n  \"Programming Language :: Python\",\n  \"Programming Language :: Python :: 3.10\",\n  \"Programming Language :: Python :: 3.11\",\n  \"Programming Language :: Python :: 3.12\",\n  \"Programming Language :: Python :: 3.13\",\n  \"Programming Language :: Python :: Implementation :: CPython\",\n  \"Programming Language :: Python :: Implementation :: PyPy\",\n]\ndependencies = [\n  \"markitdown>=0.1.0a1\",\n  \"striprtf\",\n]\n\n[project.urls]\nDocumentation = \"https://github.com/microsoft/markitdown#readme\"\nIssues = \"https://github.com/microsoft/markitdown/issues\"\nSource = \"https://github.com/microsoft/markitdown\"\n\n[tool.hatch.version]\npath = \"src/markitdown_sample_plugin/__about__.py\"\n\n# IMPORTANT: MarkItDown will look for this entry point to find the plugin.\n[project.entry-points.\"markitdown.plugin\"]\nsample_plugin = \"markitdown_sample_plugin\"\n\n[tool.hatch.envs.types]\nextra-dependencies = [\n  \"mypy>=1.0.0\",\n]\n[tool.hatch.envs.types.scripts]\ncheck = \"mypy --install-types --non-interactive {args:src/markitdown_sample_plugin tests}\"\n\n[tool.coverage.run]\nsource_pkgs = [\"markitdown-sample-plugin\", \"tests\"]\nbranch = true\nparallel = true\nomit = [\n  \"src/markitdown_sample_plugin/__about__.py\",\n]\n\n[tool.coverage.paths]\nmarkitdown-sample-plugin = [\"src/markitdown_sample_plugin\", \"*/markitdown-sample-plugin/src/markitdown_sample_plugin\"]\ntests = [\"tests\", \"*/markitdown-sample-plugin/tests\"]\n\n[tool.coverage.report]\nexclude_lines = [\n  \"no cov\",\n  \"if __name__ == .__main__.:\",\n  \"if TYPE_CHECKING:\",\n]\n\n[tool.hatch.build.targets.sdist]\nonly-include = [\"src/markitdown_sample_plugin\"]\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/src/markitdown_sample_plugin/__about__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n__version__ = \"0.1.0a1\"\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/src/markitdown_sample_plugin/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n\nfrom ._plugin import __plugin_interface_version__, register_converters, RtfConverter\nfrom .__about__ import __version__\n\n__all__ = [\n    \"__version__\",\n    \"__plugin_interface_version__\",\n    \"register_converters\",\n    \"RtfConverter\",\n]\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/src/markitdown_sample_plugin/_plugin.py",
    "content": "import locale\nfrom typing import BinaryIO, Any\nfrom striprtf.striprtf import rtf_to_text\n\nfrom markitdown import (\n    MarkItDown,\n    DocumentConverter,\n    DocumentConverterResult,\n    StreamInfo,\n)\n\n\n__plugin_interface_version__ = (\n    1  # The version of the plugin interface that this plugin uses\n)\n\nACCEPTED_MIME_TYPE_PREFIXES = [\n    \"text/rtf\",\n    \"application/rtf\",\n]\n\nACCEPTED_FILE_EXTENSIONS = [\".rtf\"]\n\n\ndef register_converters(markitdown: MarkItDown, **kwargs):\n    \"\"\"\n    Called during construction of MarkItDown instances to register converters provided by plugins.\n    \"\"\"\n\n    # Simply create and attach an RtfConverter instance\n    markitdown.register_converter(RtfConverter())\n\n\nclass RtfConverter(DocumentConverter):\n    \"\"\"\n    Converts an RTF file to in the simplest possible way.\n    \"\"\"\n\n    def accepts(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> bool:\n        mimetype = (stream_info.mimetype or \"\").lower()\n        extension = (stream_info.extension or \"\").lower()\n\n        if extension in ACCEPTED_FILE_EXTENSIONS:\n            return True\n\n        for prefix in ACCEPTED_MIME_TYPE_PREFIXES:\n            if mimetype.startswith(prefix):\n                return True\n\n        return False\n\n    def convert(\n        self,\n        file_stream: BinaryIO,\n        stream_info: StreamInfo,\n        **kwargs: Any,\n    ) -> DocumentConverterResult:\n        # Read the file stream into an str using hte provided charset encoding, or using the system default\n        encoding = stream_info.charset or locale.getpreferredencoding()\n        stream_data = file_stream.read().decode(encoding)\n\n        # Return the result\n        return DocumentConverterResult(\n            title=None,\n            markdown=rtf_to_text(stream_data),\n        )\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/src/markitdown_sample_plugin/py.typed",
    "content": ""
  },
  {
    "path": "packages/markitdown-sample-plugin/tests/__init__.py",
    "content": "# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>\n#\n# SPDX-License-Identifier: MIT\n"
  },
  {
    "path": "packages/markitdown-sample-plugin/tests/test_files/test.rtf",
    "content": "{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1\\adeff31507\\deff0\\stshfdbch31506\\stshfloch31506\\stshfhich31506\\stshfbi31507\\deflang1033\\deflangfe1033\\themelang1033\\themelangfe0\\themelangcs0{\\fonttbl{\\f0\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\f34\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02040503050406030204}Cambria Math;}\r\n{\\f42\\fbidi \\fswiss\\fcharset0\\fprq2 Aptos Display;}{\\f43\\fbidi \\fswiss\\fcharset0\\fprq2 Aptos;}{\\flomajor\\f31500\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\r\n{\\fdbmajor\\f31501\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\fhimajor\\f31502\\fbidi \\fswiss\\fcharset0\\fprq2 Aptos Display;}{\\fbimajor\\f31503\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}\r\n{\\flominor\\f31504\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\fdbminor\\f31505\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\fhiminor\\f31506\\fbidi \\fswiss\\fcharset0\\fprq2 Aptos;}\r\n{\\fbiminor\\f31507\\fbidi \\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\f51\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\f52\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}\r\n{\\f54\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\f55\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\f56\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\f57\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}\r\n{\\f58\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\f59\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}{\\f391\\fbidi \\froman\\fcharset238\\fprq2 Cambria Math CE;}{\\f392\\fbidi \\froman\\fcharset204\\fprq2 Cambria Math Cyr;}\r\n{\\f394\\fbidi \\froman\\fcharset161\\fprq2 Cambria Math Greek;}{\\f395\\fbidi \\froman\\fcharset162\\fprq2 Cambria Math Tur;}{\\f398\\fbidi \\froman\\fcharset186\\fprq2 Cambria Math Baltic;}{\\f399\\fbidi \\froman\\fcharset163\\fprq2 Cambria Math (Vietnamese);}\r\n{\\f471\\fbidi \\fswiss\\fcharset238\\fprq2 Aptos Display CE;}{\\f472\\fbidi \\fswiss\\fcharset204\\fprq2 Aptos Display Cyr;}{\\f474\\fbidi \\fswiss\\fcharset161\\fprq2 Aptos Display Greek;}{\\f475\\fbidi \\fswiss\\fcharset162\\fprq2 Aptos Display Tur;}\r\n{\\f478\\fbidi \\fswiss\\fcharset186\\fprq2 Aptos Display Baltic;}{\\f479\\fbidi \\fswiss\\fcharset163\\fprq2 Aptos Display (Vietnamese);}{\\f481\\fbidi \\fswiss\\fcharset238\\fprq2 Aptos CE;}{\\f482\\fbidi \\fswiss\\fcharset204\\fprq2 Aptos Cyr;}\r\n{\\f484\\fbidi \\fswiss\\fcharset161\\fprq2 Aptos Greek;}{\\f485\\fbidi \\fswiss\\fcharset162\\fprq2 Aptos Tur;}{\\f488\\fbidi \\fswiss\\fcharset186\\fprq2 Aptos Baltic;}{\\f489\\fbidi \\fswiss\\fcharset163\\fprq2 Aptos (Vietnamese);}\r\n{\\flomajor\\f31508\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\flomajor\\f31509\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}{\\flomajor\\f31511\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}\r\n{\\flomajor\\f31512\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\flomajor\\f31513\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\flomajor\\f31514\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}\r\n{\\flomajor\\f31515\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\flomajor\\f31516\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}{\\fdbmajor\\f31518\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}\r\n{\\fdbmajor\\f31519\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}{\\fdbmajor\\f31521\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\fdbmajor\\f31522\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}\r\n{\\fdbmajor\\f31523\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\fdbmajor\\f31524\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}{\\fdbmajor\\f31525\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}\r\n{\\fdbmajor\\f31526\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}{\\fhimajor\\f31528\\fbidi \\fswiss\\fcharset238\\fprq2 Aptos Display CE;}{\\fhimajor\\f31529\\fbidi \\fswiss\\fcharset204\\fprq2 Aptos Display Cyr;}\r\n{\\fhimajor\\f31531\\fbidi \\fswiss\\fcharset161\\fprq2 Aptos Display Greek;}{\\fhimajor\\f31532\\fbidi \\fswiss\\fcharset162\\fprq2 Aptos Display Tur;}{\\fhimajor\\f31535\\fbidi \\fswiss\\fcharset186\\fprq2 Aptos Display Baltic;}\r\n{\\fhimajor\\f31536\\fbidi \\fswiss\\fcharset163\\fprq2 Aptos Display (Vietnamese);}{\\fbimajor\\f31538\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\fbimajor\\f31539\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}\r\n{\\fbimajor\\f31541\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\fbimajor\\f31542\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\fbimajor\\f31543\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}\r\n{\\fbimajor\\f31544\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}{\\fbimajor\\f31545\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\fbimajor\\f31546\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}\r\n{\\flominor\\f31548\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\flominor\\f31549\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}{\\flominor\\f31551\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}\r\n{\\flominor\\f31552\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\flominor\\f31553\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\flominor\\f31554\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}\r\n{\\flominor\\f31555\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\flominor\\f31556\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}{\\fdbminor\\f31558\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}\r\n{\\fdbminor\\f31559\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}{\\fdbminor\\f31561\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\fdbminor\\f31562\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}\r\n{\\fdbminor\\f31563\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\fdbminor\\f31564\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}{\\fdbminor\\f31565\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}\r\n{\\fdbminor\\f31566\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}{\\fhiminor\\f31568\\fbidi \\fswiss\\fcharset238\\fprq2 Aptos CE;}{\\fhiminor\\f31569\\fbidi \\fswiss\\fcharset204\\fprq2 Aptos Cyr;}\r\n{\\fhiminor\\f31571\\fbidi \\fswiss\\fcharset161\\fprq2 Aptos Greek;}{\\fhiminor\\f31572\\fbidi \\fswiss\\fcharset162\\fprq2 Aptos Tur;}{\\fhiminor\\f31575\\fbidi \\fswiss\\fcharset186\\fprq2 Aptos Baltic;}\r\n{\\fhiminor\\f31576\\fbidi \\fswiss\\fcharset163\\fprq2 Aptos (Vietnamese);}{\\fbiminor\\f31578\\fbidi \\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\fbiminor\\f31579\\fbidi \\froman\\fcharset204\\fprq2 Times New Roman Cyr;}\r\n{\\fbiminor\\f31581\\fbidi \\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\fbiminor\\f31582\\fbidi \\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\fbiminor\\f31583\\fbidi \\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}\r\n{\\fbiminor\\f31584\\fbidi \\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}{\\fbiminor\\f31585\\fbidi \\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\fbiminor\\f31586\\fbidi \\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}}\r\n{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue255;\\red0\\green255\\blue0;\\red255\\green0\\blue255;\\red255\\green0\\blue0;\\red255\\green255\\blue0;\\red255\\green255\\blue255;\\red0\\green0\\blue128;\\red0\\green128\\blue128;\\red0\\green128\\blue0;\r\n\\red128\\green0\\blue128;\\red128\\green0\\blue0;\\red128\\green128\\blue0;\\red128\\green128\\blue128;\\red192\\green192\\blue192;\\red0\\green0\\blue0;\\red0\\green0\\blue0;\\caccentone\\ctint255\\cshade191\\red15\\green71\\blue97;\r\n\\ctextone\\ctint166\\cshade255\\red89\\green89\\blue89;\\ctextone\\ctint216\\cshade255\\red39\\green39\\blue39;\\ctextone\\ctint191\\cshade255\\red64\\green64\\blue64;}{\\*\\defchp \\f31506\\fs24\\kerning2 }{\\*\\defpap \\ql \\li0\\ri0\\sa160\\sl278\\slmult1\r\n\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0 }\\noqfpromote {\\stylesheet{\\ql \\li0\\ri0\\sa160\\sl278\\slmult1\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31507\\afs24\\alang1025 \r\n\\ltrch\\fcs0 \\f31506\\fs24\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 \\snext0 \\sqformat \\spriority0 Normal;}{\\s1\\ql \\li0\\ri0\\sb360\\sa80\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel0\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs40\\alang1025 \\ltrch\\fcs0 \r\n\\fs40\\cf19\\lang1033\\langfe1033\\kerning2\\loch\\f31502\\hich\\af31502\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink15 \\sqformat \\spriority9 \\styrsid15678446 heading 1;}{\\s2\\ql \\li0\\ri0\\sb160\\sa80\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel1\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs32\\alang1025 \\ltrch\\fcs0 \r\n\\fs32\\cf19\\lang1033\\langfe1033\\kerning2\\loch\\f31502\\hich\\af31502\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink16 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 2;}{\\s3\\ql \\li0\\ri0\\sb160\\sa80\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel2\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs28\\alang1025 \\ltrch\\fcs0 \r\n\\fs28\\cf19\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink17 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 3;}{\\s4\\ql \\li0\\ri0\\sb80\\sa40\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel3\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\ai\\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\i\\fs24\\cf19\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink18 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 4;}{\\s5\\ql \\li0\\ri0\\sb80\\sa40\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel4\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\fs24\\cf19\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink19 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 5;}{\\s6\\ql \\li0\\ri0\\sb40\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel5\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\ai\\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\i\\fs24\\cf20\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink20 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 6;}{\\s7\\ql \\li0\\ri0\\sb40\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel6\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\fs24\\cf20\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink21 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 7;}{\\s8\\ql \\li0\\ri0\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel7\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\ai\\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\i\\fs24\\cf21\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink22 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 8;}{\\s9\\ql \\li0\\ri0\\sl278\\slmult1\r\n\\keep\\keepn\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\outlinelevel8\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\fs24\\cf21\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink23 \\ssemihidden \\sunhideused \\sqformat \\spriority9 \\styrsid15678446 heading 9;}{\\*\\cs10 \\additive \r\n\\ssemihidden \\sunhideused \\spriority1 Default Paragraph Font;}{\\*\r\n\\ts11\\tsrowd\\trftsWidthB3\\trpaddl108\\trpaddr108\\trpaddfl3\\trpaddft3\\trpaddfb3\\trpaddfr3\\trcbpat1\\trcfpat1\\tblind0\\tblindtype3\\tsvertalt\\tsbrdrt\\tsbrdrl\\tsbrdrb\\tsbrdrr\\tsbrdrdgl\\tsbrdrdgr\\tsbrdrh\\tsbrdrv \\ql \\li0\\ri0\\sa160\\sl278\\slmult1\r\n\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31507\\afs24\\alang1025 \\ltrch\\fcs0 \\f31506\\fs24\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 \\snext11 \\ssemihidden \\sunhideused Normal Table;}{\\*\\cs15 \r\n\\additive \\rtlch\\fcs1 \\af31503\\afs40 \\ltrch\\fcs0 \\fs40\\cf19\\loch\\f31502\\hich\\af31502\\dbch\\af31501 \\sbasedon10 \\slink1 \\spriority9 \\styrsid15678446 Heading 1 Char;}{\\*\\cs16 \\additive \\rtlch\\fcs1 \\af31503\\afs32 \\ltrch\\fcs0 \r\n\\fs32\\cf19\\loch\\f31502\\hich\\af31502\\dbch\\af31501 \\sbasedon10 \\slink2 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 2 Char;}{\\*\\cs17 \\additive \\rtlch\\fcs1 \\af31503\\afs28 \\ltrch\\fcs0 \\fs28\\cf19\\dbch\\af31501 \r\n\\sbasedon10 \\slink3 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 3 Char;}{\\*\\cs18 \\additive \\rtlch\\fcs1 \\ai\\af31503 \\ltrch\\fcs0 \\i\\cf19\\dbch\\af31501 \\sbasedon10 \\slink4 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 4 Char;}{\\*\\cs19 \\additive \r\n\\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\cf19\\dbch\\af31501 \\sbasedon10 \\slink5 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 5 Char;}{\\*\\cs20 \\additive \\rtlch\\fcs1 \\ai\\af31503 \\ltrch\\fcs0 \\i\\cf20\\dbch\\af31501 \r\n\\sbasedon10 \\slink6 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 6 Char;}{\\*\\cs21 \\additive \\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\cf20\\dbch\\af31501 \\sbasedon10 \\slink7 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 7 Char;}{\\*\\cs22 \\additive \r\n\\rtlch\\fcs1 \\ai\\af31503 \\ltrch\\fcs0 \\i\\cf21\\dbch\\af31501 \\sbasedon10 \\slink8 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 8 Char;}{\\*\\cs23 \\additive \\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\cf21\\dbch\\af31501 \r\n\\sbasedon10 \\slink9 \\ssemihidden \\spriority9 \\styrsid15678446 Heading 9 Char;}{\\s24\\ql \\li0\\ri0\\sa80\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0\\contextualspace \\rtlch\\fcs1 \\af31503\\afs56\\alang1025 \\ltrch\\fcs0 \r\n\\fs56\\expnd-2\\expndtw-10\\lang1033\\langfe1033\\kerning28\\loch\\f31502\\hich\\af31502\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink25 \\sqformat \\spriority10 \\styrsid15678446 Title;}{\\*\\cs25 \\additive \\rtlch\\fcs1 \\af31503\\afs56 \r\n\\ltrch\\fcs0 \\fs56\\expnd-2\\expndtw-10\\kerning28\\loch\\f31502\\hich\\af31502\\dbch\\af31501 \\sbasedon10 \\slink24 \\spriority10 \\styrsid15678446 Title Char;}{\\s26\\ql \\li0\\ri0\\sa160\\sl278\\slmult1\r\n\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\ilvl1\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31503\\afs28\\alang1025 \\ltrch\\fcs0 \\fs28\\expnd3\\expndtw15\\cf20\\lang1033\\langfe1033\\kerning2\\loch\\f31506\\hich\\af31506\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 \r\n\\sbasedon0 \\snext0 \\slink27 \\sqformat \\spriority11 \\styrsid15678446 Subtitle;}{\\*\\cs27 \\additive \\rtlch\\fcs1 \\af31503\\afs28 \\ltrch\\fcs0 \\fs28\\expnd3\\expndtw15\\cf20\\dbch\\af31501 \\sbasedon10 \\slink26 \\spriority11 \\styrsid15678446 Subtitle Char;}{\r\n\\s28\\qc \\li0\\ri0\\sb160\\sa160\\sl278\\slmult1\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\ai\\af31507\\afs24\\alang1025 \\ltrch\\fcs0 \\i\\f31506\\fs24\\cf22\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 \r\n\\sbasedon0 \\snext0 \\slink29 \\sqformat \\spriority29 \\styrsid15678446 Quote;}{\\*\\cs29 \\additive \\rtlch\\fcs1 \\ai\\af0 \\ltrch\\fcs0 \\i\\cf22 \\sbasedon10 \\slink28 \\spriority29 \\styrsid15678446 Quote Char;}{\\s30\\ql \\li720\\ri0\\sa160\\sl278\\slmult1\r\n\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin720\\itap0\\contextualspace \\rtlch\\fcs1 \\af31507\\afs24\\alang1025 \\ltrch\\fcs0 \\f31506\\fs24\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 \r\n\\sbasedon0 \\snext30 \\sqformat \\spriority34 \\styrsid15678446 List Paragraph;}{\\*\\cs31 \\additive \\rtlch\\fcs1 \\ai\\af0 \\ltrch\\fcs0 \\i\\cf19 \\sbasedon10 \\sqformat \\spriority21 \\styrsid15678446 Intense Emphasis;}{\\s32\\qc \\li864\\ri864\\sb360\\sa360\\sl278\\slmult1\r\n\\widctlpar\\brdrt\\brdrs\\brdrw10\\brsp200\\brdrcf19 \\brdrb\\brdrs\\brdrw10\\brsp200\\brdrcf19 \\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin864\\lin864\\itap0 \\rtlch\\fcs1 \\ai\\af31507\\afs24\\alang1025 \\ltrch\\fcs0 \r\n\\i\\f31506\\fs24\\cf19\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 \\sbasedon0 \\snext0 \\slink33 \\sqformat \\spriority30 \\styrsid15678446 Intense Quote;}{\\*\\cs33 \\additive \\rtlch\\fcs1 \\ai\\af0 \\ltrch\\fcs0 \\i\\cf19 \r\n\\sbasedon10 \\slink32 \\spriority30 \\styrsid15678446 Intense Quote Char;}{\\*\\cs34 \\additive \\rtlch\\fcs1 \\ab\\af0 \\ltrch\\fcs0 \\b\\scaps\\expnd1\\expndtw5\\cf19 \\sbasedon10 \\sqformat \\spriority32 \\styrsid15678446 Intense Reference;}}{\\*\\rsidtbl \\rsid3543682\r\n\\rsid6316520\\rsid7364952\\rsid8278432\\rsid9589131\\rsid10298217\\rsid15678446\\rsid15953651}{\\mmathPr\\mmathFont34\\mbrkBin0\\mbrkBinSub0\\msmallFrac0\\mdispDef1\\mlMargin0\\mrMargin0\\mdefJc1\\mwrapIndent1440\\mintLim0\\mnaryLim1}{\\info{\\author Adam Fourney}\r\n{\\operator Adam Fourney}{\\creatim\\yr2025\\mo2\\dy9\\hr22\\min56}{\\revtim\\yr2025\\mo2\\dy9\\hr22\\min58}{\\version1}{\\edmins2}{\\nofpages1}{\\nofwords17}{\\nofchars98}{\\nofcharsws114}{\\vern115}}{\\*\\xmlnstbl {\\xmlns1 http://schemas.microsoft.com/office/word/2003/wordm\r\nl}}\\paperw12240\\paperh15840\\margl1440\\margr1440\\margt1440\\margb1440\\gutter0\\ltrsect \r\n\\widowctrl\\ftnbj\\aenddoc\\trackmoves0\\trackformatting1\\donotembedsysfont1\\relyonvml0\\donotembedlingdata0\\grfdocevents0\\validatexml1\\showplaceholdtext0\\ignoremixedcontent0\\saveinvalidxml0\\showxmlerrors1\\noxlattoyen\r\n\\expshrtn\\noultrlspc\\dntblnsbdb\\nospaceforul\\formshade\\horzdoc\\dgmargin\\dghspace180\\dgvspace180\\dghorigin1440\\dgvorigin1440\\dghshow1\\dgvshow1\r\n\\jexpand\\viewkind1\\viewscale100\\pgbrdrhead\\pgbrdrfoot\\splytwnine\\ftnlytwnine\\htmautsp\\nolnhtadjtbl\\useltbaln\\alntblind\\lytcalctblwd\\lyttblrtgr\\lnbrkrule\\nobrkwrptbl\\snaptogridincell\\allowfieldendsel\\wrppunct\r\n\\asianbrkrule\\rsidroot15678446\\newtblstyruls\\nogrowautofit\\usenormstyforlist\\noindnmbrts\\felnbrelev\\nocxsptable\\indrlsweleven\\noafcnsttbl\\afelev\\utinl\\hwelev\\spltpgpar\\notcvasp\\notbrkcnstfrctbl\\notvatxbx\\krnprsnet\\cachedcolbal \\nouicompat \\fet0\r\n{\\*\\wgrffmtfilter 2450}\\nofeaturethrottle1\\ilfomacatclnup0\\ltrpar \\sectd \\ltrsect\\linex0\\endnhere\\sectlinegrid360\\sectdefaultcl\\sftnbj {\\*\\pnseclvl1\\pnucrm\\pnstart1\\pnindent720\\pnhang {\\pntxta .}}{\\*\\pnseclvl2\\pnucltr\\pnstart1\\pnindent720\\pnhang \r\n{\\pntxta .}}{\\*\\pnseclvl3\\pndec\\pnstart1\\pnindent720\\pnhang {\\pntxta .}}{\\*\\pnseclvl4\\pnlcltr\\pnstart1\\pnindent720\\pnhang {\\pntxta )}}{\\*\\pnseclvl5\\pndec\\pnstart1\\pnindent720\\pnhang {\\pntxtb (}{\\pntxta )}}{\\*\\pnseclvl6\\pnlcltr\\pnstart1\\pnindent720\\pnhang \r\n{\\pntxtb (}{\\pntxta )}}{\\*\\pnseclvl7\\pnlcrm\\pnstart1\\pnindent720\\pnhang {\\pntxtb (}{\\pntxta )}}{\\*\\pnseclvl8\\pnlcltr\\pnstart1\\pnindent720\\pnhang {\\pntxtb (}{\\pntxta )}}{\\*\\pnseclvl9\\pnlcrm\\pnstart1\\pnindent720\\pnhang {\\pntxtb (}{\\pntxta )}}\r\n\\pard\\plain \\ltrpar\\s24\\ql \\li0\\ri0\\sa80\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0\\pararsid15678446\\contextualspace \\rtlch\\fcs1 \\af31503\\afs56\\alang1025 \\ltrch\\fcs0 \r\n\\fs56\\expnd-2\\expndtw-10\\lang1033\\langfe1033\\kerning28\\loch\\af31502\\hich\\af31502\\dbch\\af31501\\cgrid\\langnp1033\\langfenp1033 {\\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\insrsid15678446 \\hich\\af31502\\dbch\\af31501\\loch\\f31502 This is a \r\n\\hich\\af31502\\dbch\\af31501\\loch\\f31502 S\\hich\\af31502\\dbch\\af31501\\loch\\f31502 ample RT\\hich\\af31502\\dbch\\af31501\\loch\\f31502 F \\hich\\af31502\\dbch\\af31501\\loch\\f31502 File}{\\rtlch\\fcs1 \\af31503 \\ltrch\\fcs0 \\insrsid8278432 \r\n\\par }\\pard\\plain \\ltrpar\\ql \\li0\\ri0\\sa160\\sl278\\slmult1\\widctlpar\\wrapdefault\\aspalpha\\aspnum\\faauto\\adjustright\\rin0\\lin0\\itap0 \\rtlch\\fcs1 \\af31507\\afs24\\alang1025 \\ltrch\\fcs0 \\f31506\\fs24\\lang1033\\langfe1033\\kerning2\\cgrid\\langnp1033\\langfenp1033 {\r\n\\rtlch\\fcs1 \\af31507 \\ltrch\\fcs0 \\insrsid15678446 \r\n\\par It is included to test if the MarkItDown sample plugin can correctly convert RTF files.\r\n\\par }{\\*\\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a\r\n9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad\r\n5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6\r\nb01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0\r\n0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6\r\na7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f\r\nc7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512\r\n0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462\r\na1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865\r\n6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b\r\n4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b\r\n4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100d3d1e707f007000012220000160000007468656d652f7468656d652f\r\n7468656d65312e786d6cec5a4b8fdbc811be07c87f20789745ea414903cb0b3d3d6bcfd8034b76b0c796d812dbd36413ecd6cc080b0381f794cb020b6c825c02\r\ne496431064812c90452ef931066c249b1f91ea2645754b2dcf030662043373215b5f557f5d555d556cf2e1175731752e70c6094bbaaeffc0731d9ccc59489265\r\nd77d391d57daaec3054a42445982bbee1a73f78b47bffcc5437424221c6307e4137e84ba6e24447a54adf2390c23fe80a53881df162c8b9180db6c590d337409\r\n7a635aad795e508d11495c274131a87dbe58903976a652a5fb68a37c44e136115c0ecc693691aab121a1b0e1b92f117ccd0734732e10edba304fc82ea7f84ab8\r\n0e455cc00f5dd7537f6ef5d1c32a3a2a84a83820abc98dd55f21570884e7353567b69c95937aa35abbe197fa15808a7ddca82dff4b7d0a80e6735869ce45d7e9\r\n3703af5d2bb01a28bfb4e8eeb4fcba89d7f4d7f738fb9da05f6b18fa1528d7dfd8c37be3ce68d834f00a94e39b7bf89e57eb77ea065e81727cb0876f8c7aadda\r\nc8c02b50444972be8f0e5aed7650a04bc882d1632bbc13045e6b58c0b728888632bae4140b968843b116a3d72c1b03400229122471c43ac50b348728eea58271\r\n6748784ad1da755294300ec35ecdf721f41a5eadfc571647471869d2921730e17b43928fc3e7194945d77d025a5d0df2fea79fdebdfdf1dddbbfbffbe69b776f\r\nffea9c906524725586dc314a96badccf7ffaee3f7ff8b5f3efbffdf1e7ef7f6bc7731dffe12fbff9f08f7f7e4c3d6cb5ad29deffee870f3ffef0fef7dffeebcf\r\ndf5bb4f73234d3e1531263ee3cc397ce0b16c30295294cfe7896dd4e621a21a24bf49225470992b358f48f4464a09fad1145165c1f9b767c9541aab1011faf5e\r\n1b842751b612c4a2f169141bc053c6689f65562b3c957369669eae92a57df26ca5e35e2074619b7b8012c3cba3550a3996d8540e226cd03ca328116889132c1c\r\nf91b3bc7d8b2baaf0831ec7a4ae619e36c219caf88d347c46a92299919d1b4153a2631f8656d2308fe366c73facae9336a5bf5105f9848d81b885ac84f3135cc\r\nf818ad048a6d2aa728a6bac14f90886c2427eb6caee3465c80a7979832671462ce6d32cf3358afe6f4a708b29bd5eda7741d9bc84c90739bce13c4988e1cb2f3\r\n4184e2d4869d9024d2b15ff2730851e49c3161839f327387c87bf0034a0ebafb15c186bbafcf062f21cbe994b601227f5965165f3ec6cc88dfc99a2e10b6a59a\r\n5e161b29b697116b74f4574b23b44f30a6e81285183b2fbfb430e8b3d4b0f996f49308b2ca31b605d61364c6aabc4f30875e493637fb79f2847023642778c90e\r\nf0395def249e354a62941dd2fc0cbcaedb7c34cb60335a283ca7f3731df88c400f08f16235ca730e3ab4e03ea8f52c42460193f7dc1eafebccf0df4df618eccb\r\nd7068d1bec4b90c1b79681c4aecb7cd43653448d09b6013345c439b1a55b1031dcbf1591c55589adac720b73d36edd00dd91d1f4c424b9a603fadf743e9640fc\r\n343d8f5db191b06ed9ed1c4a28c73b3dce21dc6e67336059483effc6668856c919865ab29fb5eefb9afbbec6fdbfef6b0eede7fb6ee650cf71dfcdb8d065dc77\r\n33c501cba7e966b60d0cf436f290213fec51473ff1c1939f05a17422d6149f7075f8c3e199261cc3a09453a79eb83c094c23b894650e263070cb0c29192763e2\r\n5744449308a57042e4bb52c99217aa97dc4919878323356cd52df174159fb2303ff054274c5e5e593912db71af09474ff9381c56891c1db48a41c94f9daa025f\r\nc576a90e5b3704a4ec6d4868939924ea1612adcde03524e4d9d9a761d1b1b0684bf51b57ed9902a8955e81876e071ed5bb6eb32109c149399f43831e4a3fe5ae\r\nde785739f3537afa90318d0880c3c57c2570345f7aba23b91e5c9e5c5d1e6a37f0b4414239250f2b9384b28c6af078048fc24574cad19bd0b8adaf3b5b971af4\r\na429d47c10df5b1aadf6c758dcd5d720b79b1b68a2670a9a38975d37a8372164e628edba0b383886cb3885d8e1f2b90bd125bc7d998b2cdff077c92c69c6c510\r\nf12837b84a3ab97b622270e65012775db9fcd20d3451394471f36b90103e5b721d482b9f1b3970bae964bc58e0b9d0ddae8d484be7b790e1f35c61fd5589df1d\r\n2c25d90adc3d89c24b674657d90b0421d66cf9d28021e1f0fec0cfad191278215626b26dfced14a622f9eb6fa4540ce5e388a6112a2a8a9ecc73b8aa27251d75\r\n57da40bb2bd60c06d54c5214c2d9521658dda846352d4b57cee160d5bd5e485a4e4b9adb9a6964155935ed59cc98615306766c79b722afb1da9818729a5ee1f3\r\nd4bd9b723b9b5cb7d3279455020c5edaef6ea55fa3b69dcca02619efa76199b38b51b3766c16780db59b14092deb071bb53b762b6b84753a18bc53e507b9dda8\r\n85a1c5a6af5496566fcef597db6cf61a92c710badc15cd5f77d304ee6454f2f42c53be9db1705d5c529e279adce7b22795489abcc00b8784579b7eb2746fbe3d\r\nf257ae7ed10c28b41493b5ab14b4367ba6608197a2f986bd8d7029a16686d6bb1456c78ab67e575c6d28cb561df0ca843c5f3598b6b0145ced5b118ec83304ad\r\ned44357679ee05da57a2c82f70e5ac32d275bff69abdc6a0d61c54bc76735469d41b5ea5ddecd52bbd66b3ee8f9abe37ecd7de003d11c57e33fff4610c6f82e8\r\nbaf800428def7d04116f5e763d98b3b8cad4470e55e57df511845f3bfc110438126805b571a7dee907954ebd37ae3486fd76a53308fa956130680dc7c341b3dd\r\n19bf719d0b056ef4ea8346306a57027f30a834024fd26f772aad46add66bb47aed51a3f7a6703fac3ccfc1852dc07c8ad7a3ff020000ffff0300504b03041400\r\n06000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c7384\r\n8f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16d\r\nb8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017c\r\nc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d001400060008\r\n0000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600\r\n080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b\r\n799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014\r\n000600080000002100d3d1e707f0070000122200001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01\r\n022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000fa0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000f50b00000000}\r\n{\\*\\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d\r\n617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169\r\n6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363\r\n656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}\r\n{\\*\\latentstyles\\lsdstimax376\\lsdlockeddef0\\lsdsemihiddendef0\\lsdunhideuseddef0\\lsdqformatdef0\\lsdprioritydef99{\\lsdlockedexcept \\lsdqformat1 \\lsdpriority0 \\lsdlocked0 Normal;\\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 1;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 4;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 6;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 7;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 8;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority9 \\lsdlocked0 heading 9;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 1;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 5;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 6;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 7;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 8;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index 9;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 6;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 7;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 8;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority39 \\lsdlocked0 toc 9;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Normal Indent;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 footnote text;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 annotation text;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 header;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 footer;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 index heading;\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority35 \\lsdlocked0 caption;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 table of figures;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 envelope address;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 envelope return;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 footnote reference;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 annotation reference;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 line number;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 page number;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 endnote reference;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 endnote text;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 table of authorities;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 macro;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 toa heading;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Bullet;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Number;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Bullet 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Bullet 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Bullet 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Bullet 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Number 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Number 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Number 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Number 5;\\lsdqformat1 \\lsdpriority10 \\lsdlocked0 Title;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Closing;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Signature;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority1 \\lsdlocked0 Default Paragraph Font;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text Indent;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Continue;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Continue 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Continue 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Continue 4;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 List Continue 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Message Header;\\lsdqformat1 \\lsdpriority11 \\lsdlocked0 Subtitle;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Salutation;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Date;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text First Indent;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text First Indent 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Note Heading;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text Indent 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Body Text Indent 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Block Text;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Hyperlink;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 FollowedHyperlink;\\lsdqformat1 \\lsdpriority22 \\lsdlocked0 Strong;\r\n\\lsdqformat1 \\lsdpriority20 \\lsdlocked0 Emphasis;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Document Map;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Plain Text;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 E-mail Signature;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Top of Form;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Bottom of Form;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Normal (Web);\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Acronym;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Address;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Cite;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Code;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Definition;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Keyboard;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Preformatted;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Sample;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Typewriter;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 HTML Variable;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Normal Table;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 annotation subject;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 No List;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Outline List 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Outline List 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Outline List 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Simple 1;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Simple 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Simple 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Classic 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Classic 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Classic 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Classic 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Colorful 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Colorful 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Colorful 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Columns 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Columns 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Columns 3;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Columns 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Columns 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 6;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 7;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Grid 8;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 4;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 5;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 6;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 7;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table List 8;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table 3D effects 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table 3D effects 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table 3D effects 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Contemporary;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Elegant;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Professional;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Subtle 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Subtle 2;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Web 1;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Web 2;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Web 3;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Balloon Text;\\lsdpriority39 \\lsdlocked0 Table Grid;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Table Theme;\\lsdsemihidden1 \\lsdlocked0 Placeholder Text;\r\n\\lsdqformat1 \\lsdpriority1 \\lsdlocked0 No Spacing;\\lsdpriority60 \\lsdlocked0 Light Shading;\\lsdpriority61 \\lsdlocked0 Light List;\\lsdpriority62 \\lsdlocked0 Light Grid;\\lsdpriority63 \\lsdlocked0 Medium Shading 1;\\lsdpriority64 \\lsdlocked0 Medium Shading 2;\r\n\\lsdpriority65 \\lsdlocked0 Medium List 1;\\lsdpriority66 \\lsdlocked0 Medium List 2;\\lsdpriority67 \\lsdlocked0 Medium Grid 1;\\lsdpriority68 \\lsdlocked0 Medium Grid 2;\\lsdpriority69 \\lsdlocked0 Medium Grid 3;\\lsdpriority70 \\lsdlocked0 Dark List;\r\n\\lsdpriority71 \\lsdlocked0 Colorful Shading;\\lsdpriority72 \\lsdlocked0 Colorful List;\\lsdpriority73 \\lsdlocked0 Colorful Grid;\\lsdpriority60 \\lsdlocked0 Light Shading Accent 1;\\lsdpriority61 \\lsdlocked0 Light List Accent 1;\r\n\\lsdpriority62 \\lsdlocked0 Light Grid Accent 1;\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 1;\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 1;\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 1;\\lsdsemihidden1 \\lsdlocked0 Revision;\r\n\\lsdqformat1 \\lsdpriority34 \\lsdlocked0 List Paragraph;\\lsdqformat1 \\lsdpriority29 \\lsdlocked0 Quote;\\lsdqformat1 \\lsdpriority30 \\lsdlocked0 Intense Quote;\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 1;\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 1;\r\n\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 1;\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 1;\\lsdpriority70 \\lsdlocked0 Dark List Accent 1;\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 1;\\lsdpriority72 \\lsdlocked0 Colorful List Accent 1;\r\n\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 1;\\lsdpriority60 \\lsdlocked0 Light Shading Accent 2;\\lsdpriority61 \\lsdlocked0 Light List Accent 2;\\lsdpriority62 \\lsdlocked0 Light Grid Accent 2;\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 2;\r\n\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 2;\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 2;\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 2;\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 2;\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 2;\r\n\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 2;\\lsdpriority70 \\lsdlocked0 Dark List Accent 2;\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 2;\\lsdpriority72 \\lsdlocked0 Colorful List Accent 2;\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 2;\r\n\\lsdpriority60 \\lsdlocked0 Light Shading Accent 3;\\lsdpriority61 \\lsdlocked0 Light List Accent 3;\\lsdpriority62 \\lsdlocked0 Light Grid Accent 3;\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 3;\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 3;\r\n\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 3;\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 3;\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 3;\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 3;\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 3;\r\n\\lsdpriority70 \\lsdlocked0 Dark List Accent 3;\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 3;\\lsdpriority72 \\lsdlocked0 Colorful List Accent 3;\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 3;\\lsdpriority60 \\lsdlocked0 Light Shading Accent 4;\r\n\\lsdpriority61 \\lsdlocked0 Light List Accent 4;\\lsdpriority62 \\lsdlocked0 Light Grid Accent 4;\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 4;\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 4;\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 4;\r\n\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 4;\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 4;\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 4;\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 4;\\lsdpriority70 \\lsdlocked0 Dark List Accent 4;\r\n\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 4;\\lsdpriority72 \\lsdlocked0 Colorful List Accent 4;\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 4;\\lsdpriority60 \\lsdlocked0 Light Shading Accent 5;\\lsdpriority61 \\lsdlocked0 Light List Accent 5;\r\n\\lsdpriority62 \\lsdlocked0 Light Grid Accent 5;\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 5;\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 5;\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 5;\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 5;\r\n\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 5;\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 5;\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 5;\\lsdpriority70 \\lsdlocked0 Dark List Accent 5;\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 5;\r\n\\lsdpriority72 \\lsdlocked0 Colorful List Accent 5;\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 5;\\lsdpriority60 \\lsdlocked0 Light Shading Accent 6;\\lsdpriority61 \\lsdlocked0 Light List Accent 6;\\lsdpriority62 \\lsdlocked0 Light Grid Accent 6;\r\n\\lsdpriority63 \\lsdlocked0 Medium Shading 1 Accent 6;\\lsdpriority64 \\lsdlocked0 Medium Shading 2 Accent 6;\\lsdpriority65 \\lsdlocked0 Medium List 1 Accent 6;\\lsdpriority66 \\lsdlocked0 Medium List 2 Accent 6;\r\n\\lsdpriority67 \\lsdlocked0 Medium Grid 1 Accent 6;\\lsdpriority68 \\lsdlocked0 Medium Grid 2 Accent 6;\\lsdpriority69 \\lsdlocked0 Medium Grid 3 Accent 6;\\lsdpriority70 \\lsdlocked0 Dark List Accent 6;\\lsdpriority71 \\lsdlocked0 Colorful Shading Accent 6;\r\n\\lsdpriority72 \\lsdlocked0 Colorful List Accent 6;\\lsdpriority73 \\lsdlocked0 Colorful Grid Accent 6;\\lsdqformat1 \\lsdpriority19 \\lsdlocked0 Subtle Emphasis;\\lsdqformat1 \\lsdpriority21 \\lsdlocked0 Intense Emphasis;\r\n\\lsdqformat1 \\lsdpriority31 \\lsdlocked0 Subtle Reference;\\lsdqformat1 \\lsdpriority32 \\lsdlocked0 Intense Reference;\\lsdqformat1 \\lsdpriority33 \\lsdlocked0 Book Title;\\lsdsemihidden1 \\lsdunhideused1 \\lsdpriority37 \\lsdlocked0 Bibliography;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdqformat1 \\lsdpriority39 \\lsdlocked0 TOC Heading;\\lsdpriority41 \\lsdlocked0 Plain Table 1;\\lsdpriority42 \\lsdlocked0 Plain Table 2;\\lsdpriority43 \\lsdlocked0 Plain Table 3;\\lsdpriority44 \\lsdlocked0 Plain Table 4;\r\n\\lsdpriority45 \\lsdlocked0 Plain Table 5;\\lsdpriority40 \\lsdlocked0 Grid Table Light;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light;\\lsdpriority47 \\lsdlocked0 Grid Table 2;\\lsdpriority48 \\lsdlocked0 Grid Table 3;\\lsdpriority49 \\lsdlocked0 Grid Table 4;\r\n\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful;\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 1;\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 1;\r\n\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 1;\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 1;\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 1;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 1;\r\n\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 1;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 2;\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 2;\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 2;\r\n\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 2;\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 2;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 2;\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 2;\r\n\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 3;\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 3;\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 3;\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 3;\r\n\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 3;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 3;\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 3;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 4;\r\n\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 4;\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 4;\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 4;\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 4;\r\n\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 4;\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 4;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 5;\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 5;\r\n\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 5;\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 5;\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 5;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 5;\r\n\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 5;\\lsdpriority46 \\lsdlocked0 Grid Table 1 Light Accent 6;\\lsdpriority47 \\lsdlocked0 Grid Table 2 Accent 6;\\lsdpriority48 \\lsdlocked0 Grid Table 3 Accent 6;\r\n\\lsdpriority49 \\lsdlocked0 Grid Table 4 Accent 6;\\lsdpriority50 \\lsdlocked0 Grid Table 5 Dark Accent 6;\\lsdpriority51 \\lsdlocked0 Grid Table 6 Colorful Accent 6;\\lsdpriority52 \\lsdlocked0 Grid Table 7 Colorful Accent 6;\r\n\\lsdpriority46 \\lsdlocked0 List Table 1 Light;\\lsdpriority47 \\lsdlocked0 List Table 2;\\lsdpriority48 \\lsdlocked0 List Table 3;\\lsdpriority49 \\lsdlocked0 List Table 4;\\lsdpriority50 \\lsdlocked0 List Table 5 Dark;\r\n\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful;\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 1;\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 1;\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 1;\r\n\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 1;\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 1;\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 1;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 1;\r\n\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 2;\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 2;\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 2;\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 2;\r\n\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 2;\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 2;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 2;\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 3;\r\n\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 3;\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 3;\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 3;\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 3;\r\n\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 3;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 3;\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 4;\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 4;\r\n\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 4;\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 4;\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 4;\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 4;\r\n\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 4;\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 5;\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 5;\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 5;\r\n\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 5;\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 5;\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 5;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 5;\r\n\\lsdpriority46 \\lsdlocked0 List Table 1 Light Accent 6;\\lsdpriority47 \\lsdlocked0 List Table 2 Accent 6;\\lsdpriority48 \\lsdlocked0 List Table 3 Accent 6;\\lsdpriority49 \\lsdlocked0 List Table 4 Accent 6;\r\n\\lsdpriority50 \\lsdlocked0 List Table 5 Dark Accent 6;\\lsdpriority51 \\lsdlocked0 List Table 6 Colorful Accent 6;\\lsdpriority52 \\lsdlocked0 List Table 7 Colorful Accent 6;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Mention;\r\n\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Smart Hyperlink;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Hashtag;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Unresolved Mention;\\lsdsemihidden1 \\lsdunhideused1 \\lsdlocked0 Smart Link;}}{\\*\\datastore 01050000\r\n02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000\r\nd0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nfffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\nffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000f0af\r\n5b31897bdb01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000\r\n00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000\r\n000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000\r\n0000000000000000000000000000000000000000000000000105000000000000}}"
  },
  {
    "path": "packages/markitdown-sample-plugin/tests/test_sample_plugin.py",
    "content": "#!/usr/bin/env python3 -m pytest\nimport os\n\nfrom markitdown import MarkItDown, StreamInfo\nfrom markitdown_sample_plugin import RtfConverter\n\nTEST_FILES_DIR = os.path.join(os.path.dirname(__file__), \"test_files\")\n\nRTF_TEST_STRINGS = {\n    \"This is a Sample RTF File\",\n    \"It is included to test if the MarkItDown sample plugin can correctly convert RTF files.\",\n}\n\n\ndef test_converter() -> None:\n    \"\"\"Tests the RTF converter dirctly.\"\"\"\n    with open(os.path.join(TEST_FILES_DIR, \"test.rtf\"), \"rb\") as file_stream:\n        converter = RtfConverter()\n        result = converter.convert(\n            file_stream=file_stream,\n            stream_info=StreamInfo(\n                mimetype=\"text/rtf\", extension=\".rtf\", filename=\"test.rtf\"\n            ),\n        )\n\n        for test_string in RTF_TEST_STRINGS:\n            assert test_string in result.text_content\n\n\ndef test_markitdown() -> None:\n    \"\"\"Tests that MarkItDown correctly loads the plugin.\"\"\"\n    md = MarkItDown(enable_plugins=True)\n    result = md.convert(os.path.join(TEST_FILES_DIR, \"test.rtf\"))\n\n    for test_string in RTF_TEST_STRINGS:\n        assert test_string in result.text_content\n\n\nif __name__ == \"__main__\":\n    \"\"\"Runs this file's tests from the command line.\"\"\"\n    test_converter()\n    test_markitdown()\n    print(\"All tests passed.\")\n"
  }
]